我需要检测浏览器中的网址何时更改是否是因为点击链接,表单帖子或我更改了代码中的网址。
我需要它,因为我正在创建一个表示页面的对象,我需要在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;
}
这在大多数情况下都适用,但是当测试前进到页面然后返回到初始页面时它会失败。
我需要一种方法来检测网址何时发生变化,以便重置_page字段。
答案 0 :(得分:6)
我是一名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