Ruby WATIR-设置复选框而不直接访问它

Ruby WATIR-设置复选框而不直接访问它,ruby,watir,Ruby,Watir,我正在使用Watir自动化一些web琐事,我需要设置一个复选框,该复选框位于具有一些已知文本的div父级的上一个标记处 HTML看起来像 <div> ... <input type='checkbox'> <div> <div class='text'>text I know</div> ... </div> </div> 作为证据,如果我运行put browser.div(class:'te

我正在使用Watir自动化一些web琐事,我需要设置一个复选框,该复选框位于具有一些已知文本的div父级的上一个标记处

HTML看起来像

<div>
 ...
 <input type='checkbox'>
 <div>
  <div class='text'>text I know</div>
  ...
  </div>
</div>
作为证据,如果我运行
put browser.div(class:'text',text:/text我知道/).parent.preference\u sibling/.html
我会得到

然而,如果我尝试

browser.div(class: 'text', text: /text I know/).parent.preceding_sibling.set
这是用Watir设置复选框的方法,我明白了

method_缺失:未定义的方法
set'for#(NoMethodError)

为什么我得到的是
Watir::HTMLElement
而不是
Watir::CheckBox
实例?
是否有办法取而代之地获取复选框?

这是因为以下代码返回元素对象

browser.div(class: 'text', text: /text I know/).parent.preceding_sibling
因此,未为该对象定义set方法。为CheckBox类定义了set方法。因此,您可以尝试下面的代码,它将为您工作

browser.div(class: 'text', text: /text I know/).parent.preceding_sibling.to_subtype.set
to_subtype
返回该标记对应的对象。因此,您的设置方法将起作用

browser.div(class: 'text', text: /text I know/).parent.preceding_sibling.to_subtype.set