周围有大量示例说明如何使用以下内容使用selenium
输入文本driver.execute_script('cm.setValue("text")');
这有效,但不是我们的“硒”。我们想模拟实际的键盘按键,如selenium中的send_keys函数。我们创建了一个 enterFormData ,它使用driver.send_keys()获取元素和类型(例如,带有ID的textarea,我们可以轻松地模拟输入)。我们如何模拟CodeMirror编辑器中的实际按键?我们还希望能够测试HotKeys (例如Ctrl-Shift-M),然后选择 driver.get_screenshot_as_base64()
答案 0 :(得分:1)
The codemirror instance should have a hidden textarea in it which captures the keyboard events...
I did something like this:
driver.findElement(By.css('.CodeMirror textarea'))
.sendKeys('text',
webdriver.Key.chord(webdriver.Key.CONTROL, webdriver.Key.SHIFT, "m"));
This bit: webdriver.Key.chord(webdriver.Key.CONTROL, webdriver.Key.SHIFT, "m")
simulates the (Ctrl+Shift+M)
答案 1 :(得分:0)
要让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");
答案 2 :(得分:0)
我自己已经找到问题https://stackoverflow.com/a/48969245/6077069的答案。您应该使用驱动程序的动作链而不是元素send_keys。就我而言,这是可行的。