2012-12-05 252 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後已改變例如。點擊鏈接/按鈕。 –