<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>
在这种情况下有一个iframeunder iframe。而且我必须选择外表iframe去内在,iframe并写在内在的身体上iframe。
iframe
接下来,我必须从内部iframe到外部出来iframe,然后单击“确定”按钮(位于外部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();
以下是我的问题:
我的测试代码可以正常工作到第4行,即写到正文中,但是我想从内到外显示iframe它//button[text()='OK']未找到该元素。
//button[text()='OK']
我尝试使用索引,父母,亲戚,但没有运气。
注意: 如果我不选择内部框架(cq-gen379)。我可以单击“确定”按钮。
cq-gen379
在Webdriver中,您应该使用driver.switchTo().defaultContent();摆脱框架。您需要先退出所有框架,然后再切换到外部框架。
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();