无法在selenium webdriver中选择iframe

时间:2014-09-08 09:37:14

标签: java iframe selenium selenium-webdriver

我正在尝试按类名选择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" );

3 个答案:

答案 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

  1. 您可以通过'名称'/'id'属性切换到iFrame。

    driver.switchTo().frame("frame1");
    
  2. 您可以按帧索引切换。

    driver.switchTo().frame(driver.findElements(By.tagName("iframe").get(0));
    
  3. 现在你必须在整个页面检查有多少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();

如果有效,请告诉我。