一尘不染

如何使用Selenium / WebDriver将文本输入TinceMCE编辑器

selenium

我正在尝试使用Selenium /
Webdriver
自动将一些文本插入使用tinymce创建的文本框中

该文本框不是普通的香草文本框,因此以下操作无效:

    System.out.println("Finding text input element");
        WebElement element =  inputWebDriver.findElement(By.xpath("//html/body/div/form/div/div/div[2]"));  //not working
        //WebElement element = inputWebDriver.findElement(By.tagName("form"));  // not working
        //WebElement element = inputWebDriver.findElement(By.id("tinymce"));  // not working

        System.out.println("Entering something in text input");
        element.sendKeys("Test text");

像使用纯文本框https://code.google.com/p/selenium/wiki/GettingStarted一样可以正常工作

以下是屏幕截图,显示了如何在浏览器的“元素”选项卡中查看textarea元素的位置:http
:
//imageshack.com/a/img812/9341/1zau.png

注意: 通过selenium,我无法在“嵌入式​​” html文档中获取任何元素(我发现元素未找到错误)

我已经找到了等效的python来完成上述操作,但是,仍然希望在我的Java代码中完成该操作:

browser.execute_script("tinyMCE.activeEditor.setContent('{}')".format(testTextVar))

阅读 294

收藏
2020-06-26

共1个答案

一尘不染

有多种实现方法。这是您可能想要看看的文章。

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

以下代码段未经测试,仅提供Java逻辑。

  • 直接发送密钥。与上述理查德的答案相同。
    inputWebDriver.switchTo().frame("input-data_ifr");
    WebElement element = inputWebDriver.findElement(By.cssSelector("body"));
    element.sendKeys("Send keys");
  • 设置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')");
2020-06-26