您好我目前正在测试页面加载时是否有焦点。我无法找到有关如何执行此操作的任何地方。基本上我想做的是检查页面中的特定元素是否具有焦点。有没有内置的方法来检查这个?
谢谢。
没有内置方法可以告诉您重点是什么。
我知道的唯一方法和我使用的方法如下。我在包含所有文本元素的基本小部件上附加了一个焦点和模糊事件,并自己跟踪它。
给出了它,但该document.activeElement
属性仅在现代浏览器中可用。
使用 JQuery 测试元素是否具有焦点的最佳方法是使用 .is(':focus') 命令或使用 $(':focus') 选择具有焦点的元素。但是,对于 Capybara,这是不可能的,因为 Capybara Webkit 或 Selenium 总是会告诉您所有元素都没有焦点,因为在测试时浏览器本身在操作系统中没有焦点。
然而,我找到了解决这个问题的方法,并开发了一个简单的脚本来在运行测试时解决这个问题。问题在于您的浏览器的本机匹配和查询选择器是操作系统感知的,这意味着除非您的浏览器和网页选项卡在操作系统中具有焦点,否则 :focus 选择器将不会匹配您文档中的任何项目。我已经在 JQuery 内部四处寻找解决这个问题的方法,这可以通过简单地强制 JQuery 使用 Sizzle 而不是使用浏览器的本机函数优化选择器查询来完成。
如果在包含 JQuery 之前包含以下脚本https://gist.github.com/1166821 ,那么您的 Selenium 测试将通过 :focus 测试。
有关问题、解决方案以及如何运行测试的完整记录,请查看http://blog.mattheworiordan.com/post/9308775285/testing-focus-with-jquery-and-selenium-or
希望对遇到同样问题的其他人有所帮助。