2009-10-05 50 views
3

我将此代码添加到我的网页:硒IDE焦点事件不火,除非窗口被激活

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

除非浏览器窗口被激活,焦点事件似乎并不火(使用'焦点'命令):

# [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。

回答

4

如果您使用fireEvent命令,它有什么区别吗?

fireEvent | argh | focus 
+0

我不明白为什么,但那个伎俩。谢谢! – Kev 2009-10-05 17:33:04

1

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

我一直在拉我的头发,因此解决了这个问题。请参阅http://blog.mattheworiordan.com/post/9308775285/testing-focus-with-jquery-and-selenium-or 了解问题的完整说明和解决方案。如果您不能阅读冗长的解释,只需包含https://gist.github.com/1166821然后加入JQuery,并使用$(':focus')查找具有焦点的元素,或者.is(':focus' )来检查一个元素是否有焦点。