【问题标题】:Webdriver SwitchTo()Webdriver SwitchTo()
【发布时间】:2012-11-30 14:50:57
【问题描述】:

我是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 作为选项。 提前致谢

【问题讨论】:

  • 请发布您收到的错误
  • OpenQA.Selenium.ISearchContext 不包含 SwitchTo 的定义我想使用 SwitchTo 切换到页面中的框架

标签: c# webdriver pageobjects


【解决方案1】:

ISearchContext 接口不是暴露SwitchTo 的接口,IWebDriver 可以。

具体使用ISearchContext 的原因是什么?如果您将其更改为IWebDriver,它将起作用。

这段代码,例如:

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

IWebDriver 实现了ISearchContext,并提供了更多功能。我强烈建议您使用它而不是单独使用 ISearchContext,除非您有特殊原因这样做。

【讨论】:

  • 谢谢你,当我切换到 IWebDriver 时问题已解决
【解决方案2】:

我相信在切换到帧时,需要使用帧 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");

如果我需要进入一个框架内的一个框架。这样我总是从页面顶部开始。

希望这会有所帮助。

【讨论】:

  • 感谢您抽出宝贵时间帮助我:)
【解决方案3】:

如果您尝试切换到框架,请指定框架名称

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

【讨论】:

    【解决方案4】:

    如果你想先切换到另一个框架中的某个框架,你应该切换到第一框架,然后从那里切换到另一个框架,例如:

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

    并且使用这种方法,您可以使用框架进行操作并以您需要的方式组合它们

    【讨论】:

      【解决方案5】:

      您缺少 IWebDriver。在代码中包含 IWebDriver,这将公开 SwitchTo() 方法。

      【讨论】:

        猜你喜欢
        • 2015-08-04
        • 2012-06-29
        • 1970-01-01
        • 2019-10-25
        • 2012-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多