如何从子iframe切换到主iframe,再从主iframe切换到普通框架?

时间:2018-07-18 07:05:30

标签: selenium

我有一个嵌套的iframe。我目前在子框架中,现在我想切换到主iframe,然后从主机中切换到普通框架。

3 个答案:

答案 0 :(得分:1)

如果您在孩子frame中,请切换到默认内容,如下所示:

driver.switchTo().defaultContent();

现在您位于主HTML上,可以再次切换到每一帧。如果要打开嵌套框架,则必须逐步进行。

您可以在此tutorial中获得更多信息。

答案 1 :(得分:1)

场景:嵌套的iframe。

iframeMain
iframeParent
iframechild

假设您位于 ifrmaechild 中:

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

因此,根据您的情况,您应该执行以下操作:driver.switchTo().parentFrame();转到iframe父级。从这里开始,您应该使用:driver.switchTo().defaultContent();进入默认的DOM树。

希望这会有所帮助。

答案 2 :(得分:1)

根据您的情况,当前您位于childFrame,现在您想从mainFrame回到childFrame,就像childFram > mainFrame > childFrame一样。

基本上,我们可以使用3种方式切换帧中的元素

  • 按索引
  • 按名称或ID
  • 通过网络元素

您可以按索引或cssSelector切换帧。我也有像你一样的问题。我针对以下问题实施了解决方案。

//Below will gives you number of frames available in current page.
Int size = driver.findElements(By.tagName("iframe")).size();
//Switch to frame by it's index
driver.switchTo().frame(4);
//To write text in iframe using below code.
WebElement body = driver.findElement(By.tagName("body"));
body.click();
body.sendKeys("Some text");
//below code will switch to default DOM
driver.switchTo().defaultContent();

希望,这对您有用。