我想在Watir中设置这个单选按钮,但它找不到它:
HTML:
<input type="RADIO" style="-moz-user-focus: normal;" tabindex="2421" handlenativeevents="false" value="3G" $9a="$9b" $89="isc_RadioItem_3" id="isc_1HV" name="network">
红宝石:
if BROWSER.radio(:value => '3G').exists?
BROWSER.radio(:value => '3G').set
end
可能是因为我们的代码包含大写的RADIO吗? (由SmartGWT生成)
对此有任何解决方法吗?
答案 0 :(得分:1)
检查DOM以查看它是否在框架内,或某个导致问题的容器。如果您无法按值访问单选按钮,则可以通过其他内容(如索引)引用它。找到单选按钮的容器,并通过第N个索引引用它。因此,如果您的按钮是表1中表12中的第二个按钮,您可以将其简化为:
BROWSER.table(:index, 1).table(:index, 12).radio(:index, 2)
或者,如果它是页面上的第二个单选按钮(总是),那么......
BROWSER.radio(:index, 2)
您还可以通过其他方式引用单选按钮:
BROWSER.radio(:value, '3G')
BROWSER.radio(:name, 'network')
BROWSER.radio(:id, 'isc_1HV')
要获得进一步的帮助,我需要知道您是否可以在该页面的同一容器中引用其他元素。有关如何引用元素的信息,请参阅此处:HTML elements supported by Watir
如果你完全陷入困境,你将需要xpath。但坦率地说,这应该是最后的手段。
答案 1 :(得分:0)
可能在一个框架中。错误消息应指向正确的方向。
答案 2 :(得分:0)
另一种选择。如果它没有响应无线电,因为它不是一个单选按钮(如Watir所理解的那样),那么你需要找到另一种方法来点击该对象。您可以尝试单击它的容器以查看它是否有效,但如果没有,那么您将需要使用硬件单击。你可以找到一个硬件点击解决方案作为鸭子打击(它在我的答案之一:here)。您可以自定义此代码以接受x和y修饰符,如果您愿意,则可以使用.left_click来硬件单击任何元素,包括容器。所以left_click RADIO容器,x和y修饰符指向单选按钮。这比仅仅硬件点击绝对x / y位置更加动态,但是它会将你的鼠标光标移开并用它来点击屏幕。我希望这有帮助!