C# Webdriver切换到()
我是webdriver的初学者,开始学习页面对象模型 以下是我使用的代码:C# Webdriver切换到(),c#,webdriver,pageobjects,C#,Webdriver,Pageobjects,我是webdriver的初学者,开始学习页面对象模型 以下是我使用的代码: public static class test1 { public static ISearchContext Driver { get { return webDriver; } } } public static class test2 { public static test3 test3 {
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
作为选项。
提前感谢我认为切换到帧时需要使用帧ID、名称或索引。因此,如果您试图访问框架内的元素,则必须先切换到框架,然后执行webDriver.FindElement(By.XPath(“somexpath”))。此外,一旦进入框架,webdriver将保留在框架中,直到您使用
webdriver.switchTo().defaultContent()切换回顶层代码>(Java)
我通常使用defaultContent为所有帧开关添加前缀:
webdriver.switchTo().defaultContent().switchTo().frame(“HeaderFrame”)代码>
或
webdriver.switchTo().defaultContent().switchTo().frame(“HeaderFrame”).switchTo().frame(“子帧”)代码>
如果我需要进入一帧中的一帧。这样,我总是从页面的顶部开始
希望这能有所帮助。ISearchContext接口不是公开切换到的接口,IWebDriver
是这样做的
使用ISearchContext的具体原因是什么?如果将其更改为IWebDriver
,它将工作
此代码,例如:
public static IWebDriver Driver
{
get
{
return webDriver;
}
}
public void switchToPopUpFrame(){
switchToDefaultFrame();
webdriver.switchTo().getPopUpFrame();
}
IWebDriver
实现了ISearchContext
,并提供了更多功能。我强烈建议您使用它,而不仅仅是ISearchContext
,除非您有特殊的理由这样做。如果您试图切换到帧,请指定帧名称
driver.switchTo().Frame("YourFrameName");
如果要首先切换到另一帧中的某个帧,则应切换到第一帧,然后再从该帧切换到另一帧,例如:
public static IWebDriver Driver
{
get
{
return webDriver;
}
}
public void switchToPopUpFrame(){
switchToDefaultFrame();
webdriver.switchTo().getPopUpFrame();
}
使用这种方法,您可以使用帧进行操作,并以您需要的方式组合它们您缺少IWebDriver。在代码中包含IWebDriver,这将公开SwitchTo()方法。请发布您正在接收的错误。Selenium.ISearchContext不包含SwitchTo的定义。我想使用SwitchTo切换到页面中的一个帧谢谢,当我改用iWebDriver时,问题得到了解决谢谢你花时间帮助我:)