javascript - 如何使用 "Enter Key"通过 Selenium 中的 JavaScript 发送 "executeScript"

标签 javascript java selenium

我正在使用 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));

但是我不建议您朝这个方向寻找,您可以尝试调用 submit() WebElement 上的函数就像这样简单:

box.submit();

另外,考虑重构您的测试套件以利用 Page Object Model Design Pattern它允许您抽象 DOM来自测试逻辑的元素表示。

关于javascript - 如何使用 "Enter Key"通过 Selenium 中的 JavaScript 发送 "executeScript",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57054003/

相关文章:

javascript - 在 JavaScript/jQuery 中解析 CSS

javascript - useState 变量在 useEffect API 调用之前调用

javascript - NodeJs 快速 session 不保存 session

java - 从列表中获取选定的项目

java - JButton 打开新的 JFrame?

java - 如何从抽屉导航调用 Fragment Activity

单击时将 JavaScript 对象/数组值转换为表单输入

selenium - 在我的测试用例中,gradle 与 selenium 一起挂起,而 eclipse 甚至没有 driver.quit

java - 使用java的带有空格的webdriver类名

java - 自定义等待 try catch webdriver