无法在 IE11 中使用 sendkeys 或 javascript 在输入框中输入文本

Can not enter text in input box using sendkeys or javascript in IE11

我正在尝试使用 sendkeys 或 javascript 在输入框中输入文本。我可以看到输入字段中输入了值,但是当单击搜索按钮时,我收到一条错误消息,指出输入字段不能为空。

html 是

input id="inputMId" class="" type="text" data-bind="value: mId, onMFieldFocusOut: MId,css{datePicker:isMIdError()}" maxlength="15"
span class="validationMessage" style="display: none;"
span id="MErrorMessage" class="validationMessage" data-bind="text:mErrorMessage,visible:isVisibleMErrorMessage()" style="display: none;"



我试过的代码是

element.sendKeys("value") 



JavascriptExecutor js = (JavascriptExecutor)getDriver();
js.executeScript("document.getElementById('inputMId').value='"+testData.get("MId")+"';"); 



我正在使用宁静框架在 Internet Explorer 11 上尝试此操作。
上面的代码在 chrome

上工作得很好

我在 IE 中遇到了类似的问题,我使用的快速解决方法是

  • 使用 java 脚本执行器将元素滚动到视图中
  • 执行 SendKeys() 操作
  • 将焦点放在文本字段上
  • 最后将焦点从元素上移开(模糊)

我用它来尝试复制实际的用户交互

虽然我很想知道为什么一个简单的 SendKeys() 操作可以在 Chrome 而不是 IE

上运行的原因

最后,以下内容对我有用。

Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable stringSelection = new StringSelection(myString);
clpbrd.setContents(stringSelection, null);
element.click();
Robot r;
try {
r = new Robot();
r.keyPress(KeyEvent.VK_CONTROL);
r.keyPress(KeyEvent.VK_V);
r.keyRelease(KeyEvent.VK_CONTROL);
r.keyRelease(KeyEvent.VK_V);
} catch (AWTException e) {
e.printStackTrace();
}

我不确定这段代码是否会 运行 成功使用 Jenkins,在本地它工作得很好