我将此代码添加到我的网页:
<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。
答案 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')检查元素是否具有焦点。