"enabled?"方法是否在Watir和/或页面对象上可用于链接?



昨天我正在努力确定此链接是否已启用,等到启用才能单击它。我正在使用 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

最新更新