Ruby WATIR-设置复选框而不直接访问它
我正在使用Watir自动化一些web琐事,我需要设置一个复选框,该复选框位于具有一些已知文本的div父级的上一个标记处 HTML看起来像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
<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