我在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();
答案 0 :(得分:5)
是的,正如理查德所说,这是How to input text into tinceMCE editior using selenium/webdriver的副本。
对于您的具体代码,我建议
为mceContentBody
尝试不同的定位器,例如使用By.cssSelector(".mceContentBody")
,By.cssSelector("body")
等。
在发送密钥之前先点击正文。
driver.findElement(By.tagName("body")).click().sendKeys("YOOOO");
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);
// no need to switch iframe
(JavascriptExecutor)driver.executeScript("tinyMCE.activeEditor.setContent('<h1>Native API text</h1> TinyMCE')");
答案 1 :(得分:1)
这样做(c#)
yourWebDriver.ExecuteScript(string.Format("tinyMCE.getInstanceById('{0}').setContent('{1}');",yourWebElement.GetAttribute("id"), "hello world"));
答案 2 :(得分:0)
写入tinymce编辑器的代码段:
注意-我不建议为编写编辑器方法而返回void,而是为了简单起见将其保留在此处-
public void writeTextToEditor(String text) {
WebElement iframe =
driver().findElements(By.tagName(UtilTexts.HTML_ELEMENT_IFRAME)).get(0);
driver().switchTo().frame(iframe);// something to look for when using timymce
txt_editorBoxSupportArticle.click(); // if the focus is not on the editor window by default you have to perform click.
txt_editorBoxSupportArticle.sendKeys(text);
getDriverForCurrentThread().switchTo().defaultContent();
}
从tinymce编辑器中读取的摘录:
public String readTextFromEditor() {
@FindBy(how = How.ID, using = ("tinymce"))
private WebElement txt_editorBoxSupportArticle;
WebElement iframe =
driver().findElements(By.tagName(UtilTexts.HTML_ELEMENT_IFRAME)).get(0);
driver().switchTo().frame(iframe);
String articleDesc = txt_editorBoxSupportArticle.getText();
getDriverForCurrentThread().switchTo().defaultContent();
return articleDesc;
}
上面的代码段已经过测试。尽管我也建议尝试使用TinyMCE的本机API。
如果有帮助,请分享您的想法。
谢谢