一尘不染

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

selenium

我想选择一个 iframe 并在“ 正文”中 输入值。我正在尝试以下代码。

HTML代码:

 <iFrame id="4564654_content_ifr">
     <html>
       <head>
         <body id="tiny">
             <div aria-lable="New Compose body">
                 <br>
             </div>
         </body>
       </head>
      </html>
  </iFrame>

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");

但是我无法输入值。

有人可以帮我吗?


阅读 269

收藏
2020-06-26

共1个答案

一尘不染

无需发送密钥,您可以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);

如果您要测试诸如TinyMCE之类的WYSIWYG编辑器,请随时阅读以下文章:

使用Selenium WebDriver测试所见即所得的编辑器

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

2020-06-26