我在 Firefox 14 中使用 Java 中的 Webdriver。
我的问题是我似乎无法让 webdriver 与 CkEditor 很好地配合使用。我一直在寻找解决方案,但在 Firefox 13 或 14 中都无法使用。这些是我尝试过的解决方案:
正常的 sendKeys 交互
textArea.sendKeys();
或者
textArea.click(); textArea.sendKeys();
结果:此代码不会在 CkEditor 中生成任何文本
Selenium 问题 3890中的代码
d.get("http://ckeditor.com/demo"); WebElement iframe = d.findElement(By.tagName("iframe")); d.switchTo().frame(iframe); WebElement tinymce = d.findElement(By.tagName("body")); tinymce.clear(); tinymce.sendKeys("Hello, ckeditor!");
结果:此代码将转到站点并清除编辑器,但不会将任何文本放入 CkEditor 实例中。
AdvancedUserInteractions - 例如。多种变体中的 Actions()
textArea.click(); new Actions(driver).sendKeys("Hello, ckeditor!").build().perform();
和
new Actions(driver).sendKeys(textArea, "Hello, ckeditor!").build().perform();
和
new Actions(driver).click(textArea).sendKeys("Hello, ckeditor!").build().perform();
结果:这些不会在 CkEditor 中产生任何文本
切换 iframe(根据上述问题 3890)并使用 AdvancedUserInteractions
代码类似于:
driver.switchTo().frame(iframe); textArea.click(); new Actions(driver).sendKeys("Hello, ckeditor!").build().perform();
结果:抛出错误“ c.value is undefined ”
使用 Javascript 和 CkEditor Api
JavascriptExecutor js = (JavascriptExecutor) d; System.out.println("[debug] Set Text: " + setText); js.executeScript("CKEDITOR.instances.editor1.setData('<p> "+ setText +"</p>');");
结果:当“ org.apache.commons.lang.StringEscapeUtils.escapeHtml ”用于/不用于将“ setText ”转换为 Html 条目时,排除“/”字符。此解决方案还会在大字符串上引发“ ERROR: null ”。
关于我没有尝试过的事情的任何想法?修复我尝试过的东西?还有其他建议吗?
谢谢!