在Selenium RC中模拟TAB键按下事件

16

我需要使用Java API在Selenium RC中模拟按下Tab键。

在输入一些文本后,我会这样做:

selenium.type(input, "mytext");

我尝试了3种方法来使选项卡起作用:

selenium.keyPress(input, "\\9");

并且:

selenium.focus(input);
selenium.keyPressNative("09");

甚至还有:

selenium.getEval("var evt = window.document.createEvent('KeyboardEvent');evt.initKeyEvent ('keypress', true, true, window,0, 0, 0, 0,0, 9,0);window.document.getElementsByTagName('input')[2].dispatchEvent(evt);")

我能得到的最好结果是在我的文本后插入一个“制表符空格”,这样我就能在输入框中得到这个:

"mytext    "

我实际想要的是跳到下一个控件。有什么线索吗?谢谢!

(注:由于各种原因,我必须使用Tab而不能使用焦点或选择来选择我想要去的元素,所以请不要提出这些建议!)

5个回答

4
selenium.keyPressNative(java.awt.event.KeyEvent.VK_TAB + ""); 

我不使用Java API,但是这篇谷歌组论坛的帖子建议它可能是你的解决方案。我无法想象在你的问题中“9”和“09”有什么区别,但是可以试一试吗?


09或9都没有区别,恐怕是这样的。 - Joel
如果您不先聚焦,而是直接通过制表符在表单中切换,然后在最后输入内容,会发生什么呢?(我并不是说这样做会解决您的问题,只是好奇) - Ryley
1
我发现需要将焦点集中在某个地方,然后按Tab键来触发一个模糊效果。 - Upperstage

3
尝试使用官方的制表符:\t\u0009

1
@Joel:请更新问题并提到它。我在那里没有看到\t - Merlyn Morgan-Graham

1

1
通过改进Ryley的答案,我们可以使用:
selenium.keyDownNative(java.awt.event.KeyEvent.VK_TAB + "");
selenium.keyUpNative(java.awt.event.KeyEvent.VK_TAB + "");

我在IE中尝试了这种VK_CONTROL的方法,效果很好。


0

使用 typeKeys()

引用上面的链接:

与简单的 "type" 命令不同,该命令可能会将指定的值直接强制插入页面中,也可能没有任何可见效果,即使在打字键通常会有可见效果的情况下也是如此。例如,如果您在表单元素上使用 "typeKeys",您可能会看到您所输入的内容的结果,也可能不会。

在某些情况下,您可能需要使用简单的 "type" 命令来设置字段的值,然后使用 "typeKeys" 命令发送与刚刚键入的内容相对应的按键事件。


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