1

如果我在 FireFoxDriver 中执行以下代码:

WebElement element = driver.findElements(By.id("some_id")); // element being a textbox
element.sendKeys("apple"); 
element.sendKeys(Keys.RETURN); 

sendKeys(Keys.RETURN)没有执行其所需的功能。实际上,我想做的是在动态文本搜索框中输入文本(如 facebook 搜索中的文本),然后按 Enter。输入工作正常,但不是回车键。

sendKeys("apple")工作,甚至sendKeys(Keys.BACK_SPACE)工作,但不是Keys.RETURN

有人有想法吗?多谢你们!

4

3 回答 3

2

不完全确定为什么会发生这种情况,但有几种替代方法可能会有所帮助:

如果元素在表单中,并且没有在提交时运行的 javascript 或您可以在任何表单输入元素(例如输入和文本区域)上使用 .submit() 的东西:

WebElement element = driver.findElements(By.id("some_id"));
element.sendKeys("apple");
element.submit()

您可以使用输入发送换行符:

WebElement element = driver.findElements(By.id("some_id"));
element.sendKeys("apple\n");

提供 send_keys 一个列表:

WebElement element = driver.findElements(By.id("some_id"));
element.sendKeys("apple", Keys.ENTER);
于 2014-03-07T06:16:23.787 回答
1

得到了上述问题的解决方案。你只需要添加一个延迟。发生这种情况是因为 Java 类运行得太快,所以如果你已经发送了一个调用,并按下了 enter/tab,在元素到达之前,按下了 enter,这就是为什么这不起作用。只需添加 Thread.delay(1000); 在您的 Keys.RETURN 命令之前。那会做的。为我工作。

于 2012-07-26T09:29:39.810 回答
0

我尝试发送 \n 并摆弄各种命令,直到我发现有人解释说“keyPress(目标)13”将发送返回键。

所以首先我使用 type 输入我想要的字符串...

*

*<tr>
    <td>type</td>
    <td>id=status</td>
    <td>This is my test string</td>
</tr>*

*

...然后将 Enter 键发送到相同的文本输入框

*

*<tr>
    <td>keyPress</td>
    <td>id=status</td>
    <td>13</td>
</tr>*

*

于 2013-07-25T13:45:10.417 回答