【问题标题】:What is the difference between driver.switchTo().parentFrame() and driver.switchTo().defaultContent() method in Selenium WebDriver?Selenium WebDriver 中的 driver.switchTo().parentFrame() 和 driver.switchTo().defaultContent() 方法有什么区别?
【发布时间】:2018-06-29 07:47:31
【问题描述】:

以下两种方法有什么区别:

driver.switchTo().parentFrame();
driver.switchTo().defaultContent();

【问题讨论】:

    标签: java selenium selenium-webdriver iframe webdriver


    【解决方案1】:

    driver.switchTo().parentFrame();

    根据规范,driver.switchTo().parentFrame(); 调用以下内容:

    其中,Switch to Parent Frame 命令将未来命令的current browsing context 设置为当前浏览上下文

    根据Java Docs parentFrame() 方法将焦点更改为父上下文。如果当前上下文是顶级浏览上下文,则上下文保持不变。

    driver.switchTo().defaultContent();

    根据Java DocsdefaultContent() 方法选择页面上的第一个框架,或者当页面包含 iframe 时选择主文档。

    【讨论】:

    • 这意味着例如,如果我有 3 个框架,它们是嵌套的框架 i1、i2、i3。如果我的光标当前在 i3.通过使用 parentframe() 我可以到达 i2 并且我可以通过使用 defaultcontent() 到达 i1
    • @sreenathreddy 正确的If my cursor currently in i3. By using parentframe() i can reach to i2defaultcontent() 将带您到主文档Top-level browsing context
    【解决方案2】:

    driver.switchTo().defaultContent();

    这会将控件传递给包含 iframe 的主文档

    driver.switchTo().parentFrame();

    这会将控制权传递给当前框架的临近父框架

    让我们理解它:

    main body
    {
    frame1
    {
    frame2
    frame3 (we are here currently)
    }
    }
    

    现在使用 driver.switchTo().defaultContent();将控制权传递给主体

    并使用 driver.switchTo().parentFrame();将控制权传递给 frame1。

    【讨论】:

      【解决方案3】:

      当你在你的网页中处理多个iframe时,那么driver.switchTo().parentFrame()一般用于将控件切换回父frame。

      当您处理网页中的弹出对话框窗口时,driver.switchTo().defaultContent() 用于将控件切换回窗口中的默认内容。

      【讨论】:

        【解决方案4】:

        明显有区别:

        场景:当有多个框架并且其中一些是嵌套的。

        iframeMain
        iframe父
        iframechild

        假设你在ifrmaechild

        当您执行 driver.switchTo().parentFrame(); 时:您将转到 iframeParent
        但是当您执行 driver.switchTo().defaultContent(); 时:您将转到页面的主 HTML。
        请注意,在这种情况下,您不会转到 iframeMain

        【讨论】:

        • driver.switchTo().defaultContent();在这种情况下,焦点将移动到所有嵌套框架的父框架。例如,我有 i1、i2、i3 帧,它们是嵌套帧。在这种情况下,如果我在 i3 聚焦时使用默认 content(),它会移动到 i1 帧。
        • 如果你使用来自 i3 的driver.switchTo().defaultContent();,你将被移动到主 HTML DOM 树。
        猜你喜欢
        • 1970-01-01
        • 2016-03-12
        • 2021-02-16
        • 2018-06-13
        • 2019-03-17
        • 1970-01-01
        • 2015-11-25
        • 2016-01-09
        • 2015-01-10
        相关资源
        最近更新 更多