【发布时间】:2018-06-29 07:47:31
【问题描述】:
以下两种方法有什么区别:
driver.switchTo().parentFrame();
driver.switchTo().defaultContent();
【问题讨论】:
标签: java selenium selenium-webdriver iframe webdriver
以下两种方法有什么区别:
driver.switchTo().parentFrame();
driver.switchTo().defaultContent();
【问题讨论】:
标签: java selenium selenium-webdriver iframe webdriver
根据规范,driver.switchTo().parentFrame(); 调用以下内容:
其中,Switch to Parent Frame 命令将未来命令的current browsing context 设置为当前浏览上下文的父。
根据Java Docs parentFrame() 方法将焦点更改为父上下文。如果当前上下文是顶级浏览上下文,则上下文保持不变。
根据Java Docs,defaultContent() 方法选择页面上的第一个框架,或者当页面包含 iframe 时选择主文档。
【讨论】:
If my cursor currently in i3. By using parentframe() i can reach to i2 但defaultcontent() 将带您到主文档 即Top-level browsing context
driver.switchTo().defaultContent();
这会将控件传递给包含 iframe 的主文档
driver.switchTo().parentFrame();
这会将控制权传递给当前框架的临近父框架
让我们理解它:
main body
{
frame1
{
frame2
frame3 (we are here currently)
}
}
现在使用 driver.switchTo().defaultContent();将控制权传递给主体
并使用 driver.switchTo().parentFrame();将控制权传递给 frame1。
【讨论】:
当你在你的网页中处理多个iframe时,那么driver.switchTo().parentFrame()一般用于将控件切换回父frame。
当您处理网页中的弹出对话框窗口时,driver.switchTo().defaultContent() 用于将控件切换回窗口中的默认内容。
【讨论】:
明显有区别:
场景:当有多个框架并且其中一些是嵌套的。
iframeMain
iframe父
iframechild
假设你在ifrmaechild:
当您执行 driver.switchTo().parentFrame(); 时:您将转到 iframeParent。
但是当您执行 driver.switchTo().defaultContent(); 时:您将转到页面的主 HTML。
请注意,在这种情况下,您不会转到 iframeMain 。
【讨论】:
driver.switchTo().defaultContent();,你将被移动到主 HTML DOM 树。