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

标签 java iframe selenium selenium-webdriver webdriver

我想选择一个 Iframe 并在 Body 中输入值。我正在尝试使用下面的代码。

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

但我无法输入值。

有人可以帮我解决这个问题吗?

最佳答案

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

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),请随时查看本文:

Test WYSIWYG editors using Selenium WebDriver

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

关于java - 如何使用 Selenium WebDriver 选择新的 IFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23489986/

相关文章:

java - 使用 PKCS#7 加密

java - 如何在HashMap中获取桶中的所有元素

Java selenium 如何在 TimeOutException 后重新加载网页?

python - 使用 Selenium webdriver 在 Python 中定位 iframe

python - 如何正确设置 Windows7 以将 Selenium 与 Firefox [TDD with Python] 结合使用?

java - 实现二分查找的问题

java - 变量 n 已在 java 中定义

google-chrome - Chrome 更新后无法在 Google Apps Script 网络应用程序中下载文件

javascript - Chrome 扩展 - 注入(inject)的 Iframe 不访问 Chrome browserAction 或 chrome.tabs 或 AngularJS

javascript - Node.js - POST 到 iFrame?