2012-12-05 185 views
1

我需要检测浏览器中的url何时发生更改,无论是因为点击链接,表单帖子还是更改了代码中的url。当硒浏览器在浏览器中更改url时检测

我需要它,因为我正在创建一个对象来表示页面,我需要在URL更改时重新创建它。

这里是我到目前为止已经试过:

private string _pageUrl; 
protected T _page = default(T); 
protected T Page 
{ 
    get 
    { 
     if (_page == null || UrlHasChanged()) 
     { 
      _page = GetPage<T>(); 
      SetPageUrl(); 
     } 
     return _page; 
    } 
} 

private bool UrlHasChanged() 
{ 
    var driver = Session.GetDriver(); 
    return driver.Url != _pageUrl; 
} 

public void SetPageUrl() 
{ 
    _pageUrl = Session.GetDriver().Url; 
} 

这在大多数情况下,但是当测试前进一个页面,然后返回到初始页面失败。

我需要一种方法来检测URL更改时,我可以重置_page字段。

回答

5

我是一名Java开发人员,因此,我在C#文档中搜索了类似于Java API的内容。我想你应该使用EventFiringWebDriver:

EventFiringWebDriver firingDriver = new EventFiringWebDriver(driver); 
firingDriver.NavigatingBack += new EventHandler<WebDriverNavigationEventArgs>(...); 
firingDriver.NavigatedBack += new EventHandler<WebDriverNavigationEventArgs>(...); 
firingDriver.NavigatingForward += new EventHandler<WebDriverNavigationEventArgs>(...); 
firingDriver.NavigatedForward += new EventHandler<WebDriverNavigationEventArgs>(...); 

我看着单元测试,我发现这一个可能对您有用: http://selenium.googlecode.com/svn/trunk/dotnet/test/WebDriver.Support.Tests/Events/EventFiringWebDriverTest.cs

+0

辉煌。非常感谢你。 – marto

+0

不为我着火... – Toolkit

+0

我认为这不会工作时,URL后已改变例如。点击链接/按钮。 –