3

私はウェブドライバーの初心者で、ページオブジェクトモデルの学習を始めました

これが私が使用するコードです:

public static class test1
{
    public static ISearchContext Driver
    {
        get
        {
            return webDriver;
        }
    }
}

public static class test2
{
    public static test3 test3
    {
        get
        {
            var Test3 = new test3();
            PageFactory.InitElements(test1.Driver, Test3 );
            return Test3 ;
        }
    }
}

public class test3
{
    public void SwitchToFrame()
    {
        test1.Driver.SwitchTo().Frame(webDriver.FindElement(By.XPath("some xpath")));

    }
}

これはエラーをスローし続けます。 SwitchToオプションとして与えられることはありません、誰でも理由を教えてもらえますか、SwitchToオプションとして取得する方法を教えてください。前もって感謝します

4

5 に答える 5

3

ISearchContextインターフェイスは、公開するインターフェイスではありSwitchToませんIWebDriver

ISearchContext具体的に使用する理由は何ですか?あなたがそれをそうするように変えるならば、IWebDriverそれは働くでしょう。

このコードは、たとえば次のとおりです。

public static IWebDriver Driver
{
    get
    {
        return webDriver;
    }
}

IWebDriverを実装ISearchContextし、はるかに多くの機能を提供します。ISearchContext特別な理由がない限り、単独ではなく、それを使用することを強くお勧めします。

于 2012-11-30T17:19:20.327 に答える
1

フレームに切り替えるときは、フレームID、名前、またはインデックスを使用して行う必要があると思います。したがって、フレーム内の要素にアクセスしようとしている場合は、最初にフレームに切り替えてから、webDriver.FindElement(By.XPath( "some xpath"))を実行する必要があります。webdriver.switchTo().defaultContent();また、フレームに入ると、 (Java)を使用してトップレベルに戻るまで、Webドライバーはフレームに残ります。

私は通常、defaultContentを使用してすべてのフレームスイッチにプレフィックスを付けます:
webdriver.switchTo().defaultContent().switchTo().frame("HeaderFrame");
または
webdriver.switchTo().defaultContent().switchTo().frame("HeaderFrame").switchTo().frame("subframe");

フレーム内のフレームに入る必要がある場合。このように、私は常にページの上部から始めています。

お役に立てれば。

于 2012-11-30T16:32:03.183 に答える
0

フレームに切り替えようとしている場合は、フレーム名を指定してください

driver.switchTo().Frame("YourFrameName");
于 2014-11-28T05:51:01.877 に答える
0

最初に他のフレームにあるフレームに切り替えたい場合は、最初のフレームに切り替えてから、そこから別のフレームに切り替える必要があります。たとえば、次のようになります。

public void switchToPopUpFrame(){
     switchToDefaultFrame();
     webdriver.switchTo().getPopUpFrame();
  }

このようなアプローチを使用すると、フレームを操作して、必要な方法でそれらを組み合わせることができます

于 2015-09-19T22:53:40.617 に答える
-1

IWebDriverがありません。コードにIWebDriverを含めると、SwitchTo()メソッドが公開されます。

于 2017-04-12T17:42:44.747 に答える