我是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
。
提前致谢
答案 0 :(得分:3)
ISearchContext
界面不是公开SwitchTo
,IWebDriver
的界面。
具体使用ISearchContext
的原因是什么?如果您将其更改为IWebDriver
,它将起作用。
此代码,例如:
public static IWebDriver Driver
{
get
{
return webDriver;
}
}
IWebDriver
实现了ISearchContext
,并提供了更多功能。我强烈建议你使用它而不仅仅是ISearchContext
,除非你有特别的理由这样做。
答案 1 :(得分:1)
我相信当切换到帧时,需要使用帧ID,名称或索引来完成。因此,如果您尝试访问框架内的元素,则必须先切换到框架,然后执行webDriver.FindElement(By.XPath(“some xpath”))。此外,一旦进入框架,webdriver将保留在框架中,直到您使用webdriver.switchTo().defaultContent();
(Java)切换回顶层。
我通常使用defaultContent为所有帧开关添加前缀:
webdriver.switchTo().defaultContent().switchTo().frame("HeaderFrame");
或
webdriver.switchTo().defaultContent().switchTo().frame("HeaderFrame").switchTo().frame("subframe");
如果我需要进入框架内的框架。这样我总是从页面顶部开始。
希望这有帮助。
答案 2 :(得分:0)
如果您尝试切换到框架,请指定框架名称
driver.switchTo().Frame("YourFrameName");
答案 3 :(得分:-1)
你缺少IWebDriver。在代码中包含IWebDriver,它将公开SwitchTo()方法。