昨天我正在努力确定此链接是否已启用,等到启用才能单击它。我正在使用 Cucumber + Ruby + Watir + Page-Object gem。该链接与以下内容非常相似:
<a id="the_link" href="#" disabled="disabled">Proceed with your order</a>
填写某些字段后,链接将启用,源将更改为:
<a id="the_link" href="#">Proceed with your order</a>
这个想法是等到链接以这种方式启用,它适用于按钮:
def click_on_link
Watir::Wait.until { self.the_link_element.element.enabled? }
self.the_link
end
。但不适用于链接。我让它确定该属性是否存在,这样:
def click_on_proceed_form
Watir::Wait.until { !self.the_link_element.element.attribute_value('disabled') }
self.proceed_form_submit
end
在此处的 Watir 文档或此处的 Page-Object gem 中查找"启用?"方法,似乎适用于所有元素。但是在这里的Watir文档中寻找相同的方法,似乎它仅适用于按钮,选择和输入。
所以,我想知道是否有链接(锚点)的"启用"方法,如果存在,如何使用它。你能帮忙澄清这个问题吗?谢谢!
Watir-webdriver 不支持链接的enabled?
方法。我相信这是因为disabled
属性不是链接的标准属性。
另一方面,Watir-classic确实支持链接的enabled?
方法。但是,它将始终返回false
(再次因为无法禁用链接)。
因此,我认为您的方法是正确的(除非您想修补链接元素以支持enabled?
)。
但是,您应该尽可能避免直接使用Watir网络驱动程序。页面对象 gem 有自己的方法来等待和获取属性值:
def click_on_proceed_form
wait_until{ !the_link_element.attribute('disabled') }
proceed_form_submit
end