javascript - 如何使用 selenium 在 Code Mirror 行中输入文本?

标签 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 来实现此目的的内容,但还没有找到关于如何实现的明确答案?任何帮助表示赞赏。谢谢。

最佳答案

要让 selenium 检测键盘事件,您首先必须使 codemirror 成为焦点。

你可以这样做:

/* 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");

关于javascript - 如何使用 selenium 在 Code Mirror 行中输入文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44054500/

相关文章:

java - 使用 Java 读取和处理带有自定义列和行分隔符的文本文件

Javascript:使用 <b> 标记突出显示字符串的一部分

javascript - Vue.js - 如何在数组对象上实现计算属性?

java - 使用堆栈实现撤消/重做方法

如何遍历一个JavaScript数组

Java JSON 对象扁平化

javascript - 模态转换显示问题

javascript - javascript 中的lastChild(或lastElementChild)未定义

javascript - Angular 2根据应用于div的类调用函数

javascript - jQuery 或 JavaScript 中的双重延迟