除非窗口处于活动状态,否则Selenium IDE焦点事件不会触发

时间:2009-10-05 16:18:42

标签: firefox events winapi selenium

我将此代码添加到我的网页:

<input id='argh' type='text' onfocus='this.value=7'>

除非浏览器窗口处于活动状态,否则焦点事件似乎不会从Selenium触发(使用'focus'命令):

# [info] Executing: |waitForElementPresent | argh | |
# [info] Executing: |focus | argh | |
# [info] Executing: |verifyValue | argh | 7 |
# [error] Actual value '' did not match '7'

如果在测试期间显示窗口,它会成功。此外,如果我在上述故障后激活浏览器窗口,#argh会聚焦并填充七,然后我回到Selenium并重新运行该行,它会成功。 (可能很明显,但......)

我做错了什么?如何在没有浏览器显示的情况下测试Selenium的AJAX下拉菜单?

我的设置是win32上Firefox 3.5.3上的Selenium IDE 1.0.2。

2 个答案:

答案 0 :(得分:4)

如果使用fireEvent命令会有什么不同吗?

fireEvent | argh | focus

答案 1 :(得分:1)

首先使用Selenium时会引发焦点事件。但是,由于Selenium控制的浏览器通常没有操作系统中的焦点,因此浏览器在浏览器重新获得焦点之前不会考虑任何元素。

我一直把头发拉过来,所以解决了这个问题。见http://blog.mattheworiordan.com/post/9308775285/testing-focus-with-jquery-and-selenium-or 有关问题的完整解释和解决方案。

如果您无法阅读冗长的解释,只需在包含JQuery之前包含https://gist.github.com/1166821,并使用$(':focus')查找具有焦点的元素,或.is(' :focus')检查元素是否具有焦点。