如何在元素对象上调用清除方法

how to call clear method on the element object

在我的项目中,我通过一些其他元素(通过标签)找到了 text_Field,例如

element.following_sibling(tag_name: 'input').send_keys 'something'

但现在它可以毫无问题地输入 text_field,但我缺少 text_field 的 clear 方法,因为它将 clear 和 type 结合在一起。现在我必须在 element.following_sibling(tag_name: 'input') 上调用 clear 方法,但由于它正在返回元素对象,所以我不能那样做。有什么办法可以在这里调用 clear 方法吗?或者我可以通过某种方式将此对象传递给 text_field() 方法吗?任何帮助表示赞赏。

我知道可以通过将 watir 元素转换为 selenium 元素来调用它,如下所示

element.following_sibling(tag_name: 'input').wd.clear

但在这里我错过了 WATIR 等待元素的时间。

我的问题现在有了答案。

答案在这里。

b.text_field(element: element.following_sibling(tag_name: 'input').wd).set 'something'

如果有人有更好的想法,请写下你的answer.Thanks。

这似乎是 Watir 的限制 adjacent methods:

  klass = if !plural && opt[:tag_name]
            Watir.element_class_for(opt[:tag_name])
          elsif !plural
            HTMLElement
          elsif opt[:tag_name]
            Object.const_get("#{Watir.element_class_for(opt[:tag_name])}Collection")
          else
            HTMLElementCollection
          end

请注意,只有 :tag_name 用于确定元素的 class。对于input元素,我们还需要考虑type属性,这样我们才能正确的分class。

我们应该在 Watir 中修复此问题(记录为 Issue 878),但与此同时,您可以使用 [=14= 手动更正 class(即 Watir::TextField) ]:

element.following_sibling(tag_name: 'input').to_subtype.clear