smr*_*iti 36 java iframe selenium selenium-webdriver
<div>
<iframe id="cq-cf-frame ">
<iframe id="gen367">
<body spellcheck="false" id="CQrte" style="height: 255px; font-size: 12px; font-family:tahoma,arial,helvetica,sans-serif; background-image: url("/libs/cq/ui/widgets/themes/default/ext/form/text-bg.gif"); background-repeat: repeat-x; background-attachment: fixed;">
<p>4t43t4<br></p>
</body >
</iframe>
</iframe>
</div>
Run Code Online (Sandbox Code Playgroud)
在这种情况下有一个iframe
下iframe
.而且我必须选择外部iframe
去内部iframe
并写入内部的身体iframe
.
接下来,我必须从内iframe
到外出来iframe
并单击OK按钮(位于外部iframe
).
以下是我的代码
/*Line 1 */ driver.switchTo().frame("cq-cf-frame");
/* 2 */ driver.findElement(By.css("#extdd-9 > div.tblRow > input.edititem").click();
/* 3 */ driver.switchTo().Frame("cq-gen379");
/* 4 */ driver.findElement(By.id("CQrte").sendKeys("Tnx");
/* 5 */ selenium.selectFrame("relative=up");
/* 6 */ driver.findElement(By.xpath("//button[text()='OK']")).click();
Run Code Online (Sandbox Code Playgroud)
以下是我的问题:
我的测试代码工作正常,直到第4行,即写入正文,但我想从内到外出来,iframe
它说//button[text()='OK']
找不到元素.
我尝试使用索引,父,亲,但没有运气.
注意:如果我不选择内框(cq-gen379).我可以点击cq-gen379
按钮.
Yi *_*eng 54
在Webdriver中,您应该使用driver.switchTo().defaultContent();
离开框架.您需要先退出所有帧,然后再次切换到外帧.
// between step 4 and step 5
// remove selenium.selectFrame("relative=up");
driver.switchTo().defaultContent(); // you are now outside both frames
driver.switchTo().frame("cq-cf-frame");
// now continue step 6
driver.findElement(By.xpath("//button[text()='OK']")).click();
Run Code Online (Sandbox Code Playgroud)
Tar*_*ken 38
您必须使用以下代码退出Iframe:
driver.switchTo().frame(driver.findElement(By.id("frameId")));
//do your stuff
driver.switchTo().defaultContent();
Run Code Online (Sandbox Code Playgroud)
希望有所帮助
小智 22
你需要先找到iframe
.您可以使用以下语句执行此操作.
WebElement iFrame= driver.findElement(By.tagName("iframe"));
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用对象switchTo
上的方法切换到它WebDriver
.
driver.switchTo().frame(iFrame);
Run Code Online (Sandbox Code Playgroud)
要移回父框架,您可以使用switchTo().parentFrame()
或者如果您想要返回主(或大多数父框架),您可以使用switchTo().defaultContent();
.
driver.switchTo().parentFrame(); // to move back to parent frame
driver.switchTo().defaultContent(); // to move back to most parent or main frame
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你.
要返回父框架,请使用:
driver.switchTo().parentFrame();
Run Code Online (Sandbox Code Playgroud)
要返回第一帧/主机,请使用:
driver.switchTo().defaultContent();
Run Code Online (Sandbox Code Playgroud)