Watir无法与元素交互并报告它们被禁用

时间:2017-10-25 09:31:13

标签: watir

虽然自动化各种OAUTH提供程序的集成测试集合,但我发现watir似乎不适用于Fitbit auth页面,并且总是报告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

我已经尝试过浏览页面上的所有字段以查看是否启用了该功能,并且我尝试使用browser.driver.action.move_to点击该元素,但似乎没有任何效果。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

问题是有3个文本字段,名称为“email”。如果您获得了文本字段的集合,则可以看到只有部分文本字段可见:

browser.text_fields(name: 'email').map(&:visible?)
#=> [false, true, false]

Watir与第一个匹配进行交互,在这种情况下,该匹配是隐藏字段之一。你实际上想要第二个字段 - 即可见字段。

您可以使用:visible标志告诉Watir找到第一个可见的标记:

browser.text_field(name: 'email', visible: true).set('value')