如何在 CodeMirror 编辑器中使用 selenium 模拟关键事件

eth*_*ree 2 javascript python selenium codemirror

有很多示例展示了如何使用以下命令使用 selenium 输入文本

driver.execute_script('cm.setValue("text")');
Run Code Online (Sandbox Code Playgroud)

这可行,但对我们来说并不是很“硒”。我们想要模拟实际的键盘按键,例如 selenium 中的 send_keys 函数。我们创建了一个EnterFormData,它使用 driver.send_keys() 获取一个元素并为其键入内容(例如,带有 ID 的文本区域,我们可以轻松模拟键入)。我们如何在 CodeMirror 编辑器中模拟实际的按键操作?我们还希望能够测试热键(例如 Ctrl-Shift-M),然后使用driver.get_screenshot_as_base64()

小智 5

为了让 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");
Run Code Online (Sandbox Code Playgroud)