如何使用"executeScript"通过 JavaScript 在 Selenium 中发送"Enter Key"



我正在努力使用 IE 11 和 Selenium 和 Java 自动化流程,在此网页上,我需要在文本框中输入一个值,然后按 Enter 键。我能够使用以下代码输入值 -

// Here Box is a webElement
JavascriptExecutor js = (JavascriptExecutor)iedriver; 
js.executeScript("arguments[0].value='1500';",box);

它按预期工作,但是当我尝试使用box.sendKeys(Keys.Enter)它不起作用时。那么我可以实现"通过 JavaScript 按 Enter 键"的方法是什么?

我也尝试了下面的代码,但这也不起作用。

Actions actions = new Actions(iedriver);
actions.moveToElement(box).sendKeys(Keys.RETURN).build().perform();

没有错误消息,代码执行,但在网页上未按下 Enter 键。

如果你想

通过JavaScript来做到这一点,你可以考虑使用KeyboardEvent.initKeyBoardEvent((函数,如下所示:

document.body.dispatchEvent(document.createEvent('KeyboardEvent').initKeyEvent(
'keydown', true, true, window, false, false, false, false, 13, 0));

但是,我不建议朝这个方向研究,相反,您可以尝试在WebElement上调用submit((函数,就像:

box.submit();

此外,请考虑重构测试套件以利用页面对象模型设计模式,该模式允许您从测试逻辑中抽象 DOM 元素表示形式。

您是否尝试过使用 Java 机器人按回车键?

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);

不要忘记释放键,否则系统将像按住回车键一样运行

参考: https://docs.oracle.com/javase/8/docs/api/java/awt/Robot.html

最新更新