无法在selenium webdriver中选择iframe

我试图通过类名选择一个Iframe ,但它不起作用,我正在尝试使用tagName ,但是当我尝试在Iframe的元素内输入时我不能,请你帮我这里是我的代码:

 webDriver driver.switchTo().frame( driver.findElement( By.className( "cke_wysiwyg_frame cke_reset" ) ) ); driver.findElement( By.xpath( "//body[contains(text(),'type here')]" ) ).sendKeys( "Testing" ); 

这是我网页上的HTML:

  

通过xpath找到iFrame解决了这个问题

 driver.switchTo().defaultContent(); driver.switchTo().frame( driver.findElement( By.xpath( iframeXpath ) ) ); 

然后返回顶部窗口:

  driver.switchTo().defaultContent(); 

你不能使用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)); 

现在你必须在整个页面检查有多少iFrame存在? 如果它说:3,总是使用第3个iFrame。

 driver.switchTo().frame(driver.findElements(By.tagName("iframe").get(3)); 

我希望它有所帮助。

是的,有一个错误..哦,你可以做一件事……手动计算页面中有多少iframe,如果你想要切换它的第三个iframe。

直接指定int值,如doc所说,

 driver.switchTo().frame(index) 

所以你的代码可以变成这样: –

 driver.switchTo().frame(3); 

并且不要忘记回到默认内容。

 driver.switchTo().defaultContent(); 

如果有效,请告诉我。