我正在尝试使用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))
有多种实现方法。这是您可能想要看看的文章。
使用Selenium WebDriver测试所见即所得的编辑器
以下代码段未经测试,仅提供Java逻辑。
inputWebDriver.switchTo().frame("input-data_ifr"); WebElement element = inputWebDriver.findElement(By.cssSelector("body")); element.sendKeys("Send keys");
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')");