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

时间:2019-07-16 09:21:03

标签: 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键。

2 个答案:

答案 0 :(得分:0)

如果要通过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元素表示。

答案 1 :(得分:0)

您是否尝试过使用Java Robot按下Enter键?

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

别忘了释放键,否则系统将像按下Enter键一样起作用

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