如何使用Selenium WebDriver选择新的IFrame?

我想在Body中选择一个Iframe和Enter值。 我正在尝试使用以下代码。

HTML代码:

    

Selenium代码:

  driver.switchTo().frame(driver.findElement(By.xpath("//iframe[contains(@id,'content_ifr')]"))); driver.findElement(By.xpath("//*[@id='tiny']/div[1]")).sendKeys("Happy New IFrame"); 

但我无法输入值。

任何人都可以帮我吗?

您可以直接设置innerHTML ,而不是发送密钥。

 driver.switchTo().frame(driver.findElement(By.xpath("//iframe[contains(@id,'content_ifr')]"))); WebElement body = driver.findElement(By.cssSelector("body")); (JavascriptExecutor)driver.executeScript("arguments[0].innerHTML = 'Happy New IFrame'", body); 

如果您正在测试某些WYSIWYG编辑器,如TinyMCE,请随时查看本文:

使用Selenium WebDriver测试WYSIWYG编辑器

然后,您可以直接通过编辑器API设置内容。 众所周知,Firefox中的sendKeys存在问题,但Chrome或PhantomJS应该没问题。

试试以下五月帮助你。

 WebElement sg= driver.findElement(By.xpath("//iframe[@id='4564654_content_ifr']")); driver.switchTo().frame(sg); 
 List iframeElements= driver.findElements(By.tagName("iframe")); System.out.println("The total number of iframes are " + iframeElements.size()); driver.switchTo().frame(0); Thread.sleep(3000); System.out.println("it is on frame1");