Watir 无法与元素交互并报告它们已禁用
Watir fails to interact with elements and reports that they are disabled
在为各种 OAUTH 提供程序自动执行一系列集成测试时,我发现 watir 似乎无法与 Fitbit 身份验证页面一起使用,并且总是报告 text_fields 已禁用,无论我做什么.
这可能是 watir 中的错误,也可能是 Fitbit 页面特有的东西(损坏的 HTML 或故意的反脚本代码)。
fitbit 页面位于https://www.fitbit.com/oauth2/authorize/
watir 可以检测到电子邮件 text_field 存在:
browser.wait_until{ browser.text_field( name: 'email' ).exists? }
但是任何与之交互的尝试都会报告一个错误,表明它已被禁用:
browser.text_field( name: 'email' ).wait_until_present
我试过使用 Tab 键浏览页面上的所有字段以查看是否启用它,并且我试过使用 browser.driver.action.move_to
单击该元素,但似乎没有任何效果。
有什么想法吗?
问题是有 3 个名称为 "email" 的文本字段。如果您获取了文本字段的集合,您会发现其中只有一部分是可见的:
browser.text_fields(name: 'email').map(&:visible?)
#=> [false, true, false]
Watir 与第一个匹配项交互,在本例中是隐藏字段之一。您实际上想要第二个字段 - 即可见字段。
您可以使用 :visible
标志告诉 Watir 找到第一个可见的:
browser.text_field(name: 'email', visible: true).set('value')
在为各种 OAUTH 提供程序自动执行一系列集成测试时,我发现 watir 似乎无法与 Fitbit 身份验证页面一起使用,并且总是报告 text_fields 已禁用,无论我做什么.
这可能是 watir 中的错误,也可能是 Fitbit 页面特有的东西(损坏的 HTML 或故意的反脚本代码)。
fitbit 页面位于https://www.fitbit.com/oauth2/authorize/
watir 可以检测到电子邮件 text_field 存在:
browser.wait_until{ browser.text_field( name: 'email' ).exists? }
但是任何与之交互的尝试都会报告一个错误,表明它已被禁用:
browser.text_field( name: 'email' ).wait_until_present
我试过使用 Tab 键浏览页面上的所有字段以查看是否启用它,并且我试过使用 browser.driver.action.move_to
单击该元素,但似乎没有任何效果。
有什么想法吗?
问题是有 3 个名称为 "email" 的文本字段。如果您获取了文本字段的集合,您会发现其中只有一部分是可见的:
browser.text_fields(name: 'email').map(&:visible?)
#=> [false, true, false]
Watir 与第一个匹配项交互,在本例中是隐藏字段之一。您实际上想要第二个字段 - 即可见字段。
您可以使用 :visible
标志告诉 Watir 找到第一个可见的:
browser.text_field(name: 'email', visible: true).set('value')