1

您好我目前正在测试页面加载时是否有焦点。我无法找到有关如何执行此操作的任何地方。基本上我想做的是检查页面中的特定元素是否具有焦点。有没有内置的方法来检查这个?

谢谢。

4

3 回答 3

1

没有内置方法可以告诉您重点是什么。

我知道的唯一方法和我使用的方法如下。我在包含所有文本元素的基本小部件上附加了一个焦点和模糊事件,并自己跟踪它。

于 2011-01-26T22:07:43.590 回答
1

给出了它,但该document.activeElement属性仅在现代浏览器中可用。

于 2011-01-27T09:06:40.603 回答
0

使用 JQuery 测试元素是否具有焦点的最佳方法是使用 .is(':focus') 命令或使用 $(':focus') 选择具有焦点的元素。但是,对于 Capybara,这是不可能的,因为 Capybara Webkit 或 Selenium 总是会告诉您所有元素都没有焦点,因为在测试时浏览器本身在操作系统中没有焦点。

然而,我找到了解决这个问题的方法,并开发了一个简单的脚本来在运行测试时解决这个问题。问题在于您的浏览器的本机匹配和查询选择器是操作系统感知的,这意味着除非您的浏览器和网页选项卡在操作系统中具有焦点,否则 :focus 选择器将不会匹配您文档中的任何项目。我已经在 J​​Query 内部四处寻找解决这个问题的方法,这可以通过简单地强制 JQuery 使用 Sizzle 而不是使用浏览器的本机函数优化选择器查询来完成。

如果在包含 JQuery 之前包含以下脚本https://gist.github.com/1166821 ,那么您的 Selenium 测试将通过 :focus 测试。

有关问题、解决方案以及如何运行测试的完整记录,请查看http://blog.mattheworiordan.com/post/9308775285/testing-focus-with-jquery-and-selenium-or

希望对遇到同样问题的其他人有所帮助。

于 2011-08-23T23:10:57.233 回答