我正在尝试按类名选择Iframe
,但它不起作用,我正在尝试tagName
它可以正常工作但是当我尝试在{{1}中的元素内输入时我不能,请你帮我这个是我的代码:
Iframe
这是我网页上的HTML:
webDriver driver.switchTo().frame( driver.findElement( By.className( "cke_wysiwyg_frame cke_reset" ) ) );
driver.findElement( By.xpath( "//body[contains(text(),'type here')]" ) ).sendKeys( "Testing" );
答案 0 :(得分:10)
通过xpath找到iFrame来解决问题
driver.switchTo().defaultContent();
driver.switchTo().frame( driver.findElement( By.xpath( iframeXpath ) ) );
然后返回顶部窗口:
driver.switchTo().defaultContent();
答案 1 :(得分:4)
您无法使用class选择iFrame。使用以下命令检查webdriver文档: -
https://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/WebDriver.TargetLocator.html
您可以通过'名称'/'id'属性切换到iFrame。
driver.switchTo().frame("frame1");
您可以按帧索引切换。
driver.switchTo().frame(driver.findElements(By.tagName("iframe").get(0));
现在你必须在整个页面检查有多少iFrame存在?如果它说:3,请始终使用第3个iFrame。
driver.switchTo().frame(driver.findElements(By.tagName("iframe").get(3));
我希望它有所帮助。
答案 2 :(得分:1)
是的,有一个错误..你可以做一件事......手动计算页面中有多少iframe,如果它是第3个你想要切换的话。
直接指定int值,如doc所说,
driver.switchTo().frame(index)
所以你的代码可以变成这样: -
driver.switchTo().frame(3);
不要忘记恢复默认内容。
driver.switchTo().defaultContent();
如果有效,请告诉我。