[英]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.