WATIR - 设置复选框而不直接访问它
WATIR - Setting a checkbox without accessing it directly
我正在使用 Watir 来自动执行一些网络杂务,我需要设置一个复选框,该复选框位于 div 的父级的前一个标记中,其中包含一些已知文本。
HTML 长得像
<div>
...
<input type='checkbox'>
<div>
<div class='text'>text I know</div>
...
</div>
</div>
我可以通过
找到复选框
browser.div(class: 'text', text: /text I know/).parent.preceding_sibling
作为证据,如果我 运行 puts browser.div(class: 'text', text: /text I know/).parent.preceding_sibling/.html
我得到 "<input type=\"checkbox\">"
.
但是,如果我尝试
browser.div(class: 'text', text: /text I know/).parent.preceding_sibling.set
其中 as far as I know 是使用 Watir 设置复选框的方法,我得到
method_missing': undefined method
为 # (NoMethodError)
设置'
为什么我得到的是 Watir::HTMLElement
而不是 Watir::CheckBox
实例?
有没有办法获得一个复选框?
那是因为,下面的代码returns元素对象
browser.div(class: 'text', text: /text I know/).parent.preceding_sibling
因此未为该对象定义 set 方法。为 CheckBox class 定义了 set 方法。所以你试试下面的代码,它会为你工作。
browser.div(class: 'text', text: /text I know/).parent.preceding_sibling.to_subtype.set
to_subtype
returns 该标签对应的对象。所以你的 set 方法会起作用。
我正在使用 Watir 来自动执行一些网络杂务,我需要设置一个复选框,该复选框位于 div 的父级的前一个标记中,其中包含一些已知文本。
HTML 长得像
<div>
...
<input type='checkbox'>
<div>
<div class='text'>text I know</div>
...
</div>
</div>
我可以通过
找到复选框browser.div(class: 'text', text: /text I know/).parent.preceding_sibling
作为证据,如果我 运行 puts browser.div(class: 'text', text: /text I know/).parent.preceding_sibling/.html
我得到 "<input type=\"checkbox\">"
.
但是,如果我尝试
browser.div(class: 'text', text: /text I know/).parent.preceding_sibling.set
其中 as far as I know 是使用 Watir 设置复选框的方法,我得到
method_missing': undefined method
为 # (NoMethodError)
为什么我得到的是 Watir::HTMLElement
而不是 Watir::CheckBox
实例?
有没有办法获得一个复选框?
那是因为,下面的代码returns元素对象
browser.div(class: 'text', text: /text I know/).parent.preceding_sibling
因此未为该对象定义 set 方法。为 CheckBox class 定义了 set 方法。所以你试试下面的代码,它会为你工作。
browser.div(class: 'text', text: /text I know/).parent.preceding_sibling.to_subtype.set
to_subtype
returns 该标签对应的对象。所以你的 set 方法会起作用。