如何使用selenium将文本输入Code Mirror行?

时间:2017-05-18 17:36:44

标签: javascript java html selenium internet-explorer

我正在使用IE在文本框中键入标记为 CodeMirror-line 的文本框。我已经尝试了javascript执行器,但这似乎只是为了看起来,因为当我尝试保存我输入的内容时它会消失。如何将文本写入代码镜像以便保留?下面是我使用javascript执行程序写入代码镜像的xpath

JavascriptExecutor js = (JavascriptExecutor) driver;

js.executeScript("arguments[0].innerHTML = 'Some text';", element);

@FindBy(xpath = "//*[@id='md-tab-content-1-0']/div/div/div[2]/jw-editor/div[1]/div/div[6]/div[1]/div/div/div/div[5]/pre")
    public WebElement element;

我也看到了使用setValue来实现这一目标的一些事情,但是没有找到明确的答案如何?任何帮助表示赞赏。感谢。

2 个答案:

答案 0 :(得分:1)

使用xpath查找文本框并使用sendKeys()方法在文本字段中输入文本

WebElement element = driver.findElement(By.xpath("//*[@id='md-tab-content-1-0']/div/div/div[2]/jw-editor/div[1]/div/div[6]/div[1]/div/div/div/div[5]/pre"));
element.sendKeys("Some Text");

答案 1 :(得分:0)

要让Selenium检测键盘事件,首先必须使代码镜像成为焦点。

您可以执行以下操作:

/* getting codemirror element */
WebElement codeMirror = driver.findElement(By.className("CodeMirror"));

/* getting the first line of code inside codemirror and clicking it to bring it in focus */
WebElement codeLine = codeMirror.findElements(By.className("CodeMirror-line")).get(0);
codeLine.click();

/* sending keystokes to textarea once codemirror is in focus */
WebElement txtbx = codeMirror.findElement(By.cssSelector("textarea"));
txtbx.sendKeys("Hello World");