Java Selenium WebDriver中的driver.switchTo().parentFrame()和driver.switchTo().defaultContent()方法之间有什么区别?

Java Selenium WebDriver中的driver.switchTo().parentFrame()和driver.switchTo().defaultContent()方法之间有什么区别?,java,selenium,selenium-webdriver,iframe,webdriver,Java,Selenium,Selenium Webdriver,Iframe,Webdriver,以下两种方法的区别是什么: driver.switchTo().parentFrame(); driver.switchTo().defaultContent(); driver.switchTo().parentFrame(); 根据规范,驱动程序.switchTo().parentFrame()调用以下命令: 其中,该命令将将来的命令设置为当前浏览上下文的父级 根据Java文档,方法将焦点更改为父上下文。如果当前上下文是顶级浏览上下文,则该上下文保持不变 driver.switchTo(

以下两种方法的区别是什么:

driver.switchTo().parentFrame();
driver.switchTo().defaultContent();
driver.switchTo().parentFrame(); 根据规范,
驱动程序.switchTo().parentFrame()调用以下命令:

其中,该命令将将来的命令设置为当前浏览上下文的父级

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

driver.switchTo().defaultContent();
根据Java文档,该方法选择页面上的第一个框架,或者当页面包含iFrame时选择主文档。

显然有区别:

场景:当存在多个帧且其中一些帧嵌套时

iframeMain
iframeParent
iframechild

假设您在ifrmechild中:

当您执行
driver.switchTo().parentFrame()时:您将转到iframeParent
但是当您执行
driver.switchTo().defaultContent()时:您将转到页面的主HTML。

请注意,在这种情况下,您将不会转到iframeMain

处理网页中的多个iFrame时,通常使用
驱动程序。switch to()。parentFrame()
将控件切换回父帧

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

driver.switchTo().defaultContent()

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

驱动程序。切换到().parentFrame()

这将把控件传递给当前帧即将出现的父帧

让我们理解它:

main body
{
frame1
{
frame2
frame3 (we are here currently)
}
}
现在使用driver.switchTo().defaultContent();将控制传递给主体


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

这意味着,例如,如果我有3个嵌套帧i1、i2、i3。如果我的光标当前在i3中。通过使用parentframe()我可以到达i2,如果我的光标当前在i3中,我可以使用defaultcontent()@sreenathreddy Correct
到达i1。通过使用parentframe(),我可以访问i2
,但是
defaultcontent()
将带您访问主文档,即driver.switchTo().defaultcontent();在这种情况下,焦点将移动到所有嵌套帧的父帧。例如,我有i1、i2、i3帧,它们是嵌套帧。在这种情况下,如果我在焦点位于i3时使用default content(),它将移动到i1帧从i3,您将被移动到主HTMLDOM树。