2

リンクのクリック、フォームの投稿、またはコードでの 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;
}

これはほとんどの場合に機能しますが、テストがページを進めてから最初のページに戻ると失敗します。

_page フィールドをリセットできるように、URL がいつ変更されたかを検出する方法が必要です。

4

1 に答える 1

6

私はJava開発者なので、Java APIに似ているC#ドキュメントを検索します。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

于 2012-12-07T21:47:55.993 に答える