代码之家  ›  专栏  ›  技术社区  ›  Pierre Baran

WebDriver之间的区别是什么。切换到()。Window()和WebDriver。切换到()。框架()

  •  0
  • Pierre Baran  · 技术社区  · 7 年前

    几天前,我有一个要求,就是 Web驱动程序 (在这种情况下是Chromedriver)在我的浏览器上的两个选项卡之间切换(其中一个选项卡已通过单击链接自动打开)。

    我能够使用以下几行代码实现一个解决方案( C# )

    var tabs = new List<String>(Driver.WindowHandles);
    //Switches to the first tab
    Driver.SwitchTo().Window(tabs[0]);
    

    然而,我最近遇到了一些使用帧和警报的实现,这让我很困惑。

    这个 documentation 对我来说并没有太大帮助,因为我仍然很难找出每一个的用例。

    你能告诉我两者的区别吗 框架 是为了这个目的(性能、可靠性、跨平台等)?

    3 回复  |  直到 7 年前
        1
  •  2
  •   cruisepandey    7 年前

    框架:

    有标签吗 HTML .但是HTML5不支持该标签。

    这个< 框架 >标签定义了一个特定的窗口( 框架 )在一分钟之内 <frameset>

    通常情况下,你一定见过 内联框架 在里面 多姆 .它基本上是HTML页面的一部分。

    此外,如果要与框架内的任何元素交互,必须切换到框架。

    怎样 :

    SwitchTo().Frame(int frameIndex) :使用索引

    SwitchTo().Frame(IWebElement frameElement) :使用先前定位的OpenQA选择帧。硒。我很快乐。

    SwitchTo().Frame(string frameName) :按帧名称选择帧。

    Windows:

    当你点击任何一个链接,一个新的标签就会打开,或者一个新的窗口就会打开,这就是Selenium中的一个窗口。

    怎样 当前位置你已经在帖子中提到了这一点。

    希望这会有帮助。

        2
  •  1
  •   yong    7 年前

    在Selenium中,窗口可以是同一浏览器实例或不同浏览器实例中的不同选项卡。语境 switch to window 是多个页面或浏览器实例。

    框架内的网页,所以 switch to frame 是一个页面,而不是多个页面或浏览器实例。

        3
  •  0
  •   undetected Selenium    7 年前

    Window对象

    这个 Window Object 表示浏览器中打开的窗口。

    如果文档包含框架(标记),浏览器将创建一个框架 Window对象 对于 HTML文档 以及它包含的每个框架的一个附加窗口对象。

    根据 WebDriver W3C Editor's Draft Web驱动程序 命令发生在 current browsing context 或者 current top-level browsing context .

    驾驶员切换到()。窗口(窗口句柄)

    水流 顶级浏览上下文 在协议中由其关联的 窗口句柄 。可以使用 Switch To Window 命令如下:

    Driver.SwitchTo().Window(windowHandle)
    

    驾驶员切换到()。框架(框架参考)

    同样,一个特定的 浏览上下文 可以使用 Switch to Frame 命令

    Driver.SwitchTo().Frame(driver.FindElement(By.XPath("//iframe[contains(@src,'<src_attribute_value>')]")));