如何让Protractor按下回车键?

59

我尝试过这个:

browser.actions().keyDown(protractor.Key.ENTER).keyUp(protractor.Key.Enter).perform();

导致错误的原因是:

Error: Not a modifier key

你尝试过 ptor.actions().sendKeys(protractor.Key.ENTER) 吗? - JB Nizet
4
这里的“ptor”是什么? - Martin Delille
7
他的 ptorbrowser -- browser.actions().sendKeys( protractor.Key.ENTER ).perform();。(注:由于代码片段中涉及特殊术语和符号,为了保持原意和精准性,在翻译过程中没有进行通俗易懂化处理。) - Lee Goddard
6个回答

88

在WebDriver中,Keyup/Keydown仅限于修饰键(shift,ctrl等)。我认为你想要:

browser.actions().sendKeys(protractor.Key.ENTER).perform();


2
谢谢!如果可以的话,我有一个后续问题。在得到答案之前,我尝试了以下代码: ptor.findElement(protractor.By.model("historyItem")).sendKeys("test5\n"); 它实际上是有效的。虽然我确定这不是官方的做法,但它是否真的做到了我想要的效果? - bodine
看起来它会在字段中输入test5,然后发送一个换行符,这可能就像按下回车键一样。 - PaulL
我在之前的答案中遇到了这个错误:无法读取未定义的属性“ENTER”...奇怪的是它确实点击了回车键。 - climboid
1
ptor代表浏览器 - browser.actions().sendKeys(protractor.Key.ENTER).perform(); - Charlesliam
我们可以使用这个按下字符和数字键吗? - Anil wagh

80

actions()函数不是必需的。

您可以像这样做:

var input = $('#someInput');
input.sendKeys(protractor.Key.ENTER);
更新: 一些人抱怨说您未将回车发送给浏览器。如果您想要这样做,只需更改选择器即可:

driver.find_element_by_xpath("your xpath").send_keys(Keys.RETURN)

$('body').sendKeys(protractor.Key.ENTER);

1
@inolasco -- :-1: 这个回答并没有回答问题,因为提问者没有“输入”:他是将按键发送到“浏览器”,而不是元素。 - Lee Goddard
使用.sendKeys()时,无需调用perform - DarthOpto

10

这里有另外一种做法

var enter = browser.actions().sendKeys(protractor.Key.ENTER);
enter.perform();

太棒了!我一直在寻找测试快捷方式的方法,你让我的一天变得美好 :-) - Martin Delille
这是唯一一个对我有效的。非常感谢! - Karel Bílek

8

2
在我的情况下,在输入文本和点击 Enter 键之间没有 sleep(),无法执行 Enter 点击操作。
const someInput = $('#someInput');
someInput.sendKeys('test text');
browser.sleep(1000);
someInput.sendKeys(protractor.Key.ENTER);

2

这将很好地运作,尝试一下吧。

browser.actions().sendKeys(protractor.Key.ENTER).perform();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接