簡體   English   中英

Webdriver SwitchTo()

[英]Webdriver SwitchTo()

我是 webdriver 的初學者,開始學習頁面對象模型

這是我使用的代碼:

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作為選項。 提前致謝

ISearchContext接口不是公開SwitchTo的接口, IWebDriver是。

具體使用ISearchContext的原因是什么? 如果您將其更改為IWebDriver ,它將起作用。

這段代碼,例如:

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

IWebDriver實現了ISearchContext ,並提供了更多的功能。 我強烈建議您使用它而不是單獨使用ISearchContext ,除非您有特殊原因這樣做。

我相信當切換到一個框架時,它需要使用框架 ID、名稱或索引來完成。 因此,如果您嘗試訪問框架內的元素,則必須先切換到框架,然后執行 webDriver.FindElement(By.XPath("some xpath"))。 此外,一旦在框架中,webdriver 將保留在框架中,直到您使用webdriver.switchTo().defaultContent();切換回頂層webdriver.switchTo().defaultContent(); (爪哇)。

我通常使用 defaultContent 為所有幀開關添加前綴:
webdriver.switchTo().defaultContent().switchTo().frame("HeaderFrame");
或者
webdriver.switchTo().defaultContent().switchTo().frame("HeaderFrame").switchTo().frame("subframe");

如果我需要進入框架內的框架。 這樣我總是從頁面頂部開始。

希望這可以幫助。

如果您嘗試切換到框架,請指定框架名稱

driver.switchTo().Frame("YourFrameName");

如果要先切換到其他幀中的某個幀,則應先切換到第一幀,然后再從那里切換到另一幀,例如:

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

並使用這種方法,您可以使用框架進行操作並以您需要的方式組合它們

你缺少 IWebDriver。 在代碼中包含 IWebDriver,這將公開 SwitchTo() 方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM