UI测试{水豚+ Cucumber]:如何检查特定文本框是否具有焦点

发布于 2024-10-15 01:19:35 字数 106 浏览 4 评论 0 原文

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

谢谢。

Hi I am currently testing to see if a specific field has focus when the page loads.
I could not find anywhere on how to do this.
Basically what I want to do is to check if a specific element in a page has focus.
Is there any built in method to check this?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

慕巷 2024-10-22 01:19:36

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

The document.activeElement gives it, but that property is only available in modern browsers.

回忆凄美了谁 2024-10-22 01:19:36

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

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

There is no build in method to tell you what has focus.

The only way I know and the method i use is the following. I attach a focus and blur event at the base widget that contains all the text element and keep track of it my self.

却一份温柔 2024-10-22 01:19:36

使用 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

希望能帮助其他遇到同样问题的人。

The best way to test if an element has focus with JQuery is using the .is(':focus') command or selecting the element with focus using $(':focus'). However, with Capybara this is not possible as Capybara Webkit or Selenium will ALWAYS tell you that all elements do not have focus as the browser itself does not have focus in the OS at the time of the test.

I have however found the solution to this problem, and developed a simple script to fix this issue when running your tests. The problem lies with your browser's native match and query selectors being operating system aware, meaning that unless your browser and the web page tab has the focus within the operating system, then the :focus selector will not match ANY items within your document. I've poked around inside JQuery to work out a way around this, and this can be done by simply forcing JQuery to use Sizzle and not optimise the selector queries using the browser's native functions.

If you include the following script https://gist.github.com/1166821 BEFORE you include JQuery, then your Selenium tests will pass the :focus tests.

For a complete write up of the issue, the solution and how to run tests, please review http://blog.mattheworiordan.com/post/9308775285/testing-focus-with-jquery-and-selenium-or

Hope that helps others who have this same issue.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文