java - 无法使用 Selenium WebDriver 将 Keys() 发送到 TinyMCE

标签 java selenium tinymce selenium-webdriver wysiwyg

我在 Eclipse 中使用 Selenium WebDriver,我试图将文本插入网页上的 tinymce 框中。这是我正在使用的代码。

//find tinymce iframe
editorFrame = driver.findElement(By.cssSelector(".col_right iframe"));

//switch to iframe
driver.switchTo().frame(editorFrame);
driver.findElement(By.className("mceContentBody")).sendKeys("YOOOO");
driver.switchTo().defaultContent();

光标在编辑器内闪烁,但没有发送任何文本。 我也尝试过这种轻微的变化,但没有任何运气。

//find tinymce iframe
editorFrame = driver.findElement(By.cssSelector(".col_right iframe"));  

//switch to iframe
driver.switchTo().frame(editorFrame);
WebElement body = driver.findElement(By.className("mceContentBody"));
body.sendKeys("YOOOO");
driver.switchTo().defaultContent();

最佳答案

是的,正如 Richard 所说,这是 How to input text into tinceMCE editior using selenium/webdriver 的副本.

对于您的具体代码,我建议

  • mceContentBody 尝试不同的定位器,例如使用 By.cssSelector(".mceContentBody")By.cssSelector("body")

  • 发送 key 前先点击主体。

driver.findElement(By.tagName("body")).click().sendKeys("YOOOO");
  • 设置innerHTML
inputWebDriver.switchTo().frame("input-data_ifr");
WebElement element = inputWebDriver.findElement(By.cssSelector("body"));
(JavascriptExecutor)driver.executeScript("arguments[0].innerHTML = '<h1>Set text using innerHTML</h1>'", element);
  • 使用 TinyMCE 的原生 API
// no need to switch iframe
(JavascriptExecutor)driver.executeScript("tinyMCE.activeEditor.setContent('<h1>Native API text</h1> TinyMCE')");

进一步阅读:Test WYSIWYG editors using Selenium WebDriver

关于java - 无法使用 Selenium WebDriver 将 Keys() 发送到 TinyMCE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21713345/

相关文章:

java - 在屏幕中将耗时显示为 Score java libgdx

java - ant 1.10.x是否支持log4j2

python - 为什么 Selenium 的响应没有 sessionId?

java - 如何使用 Selenium 在文本字段中发送数据?

Tinymce - 使用 bbcodes 的字体大小问题

java - 如何排除异步任务故障?

python - 如何使用 webDriver(python)最大化 chrome 中的窗口

php - Tinymce Enter 键

javascript - Extjs4 和 TinyMCE

java - 如何缩进在java中写入控制台的多行段落