找不到Watir单选按钮

时间:2011-01-25 10:40:36

标签: radio-button watir

我想在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生成)

对此有任何解决方法吗?

3 个答案:

答案 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位置更加动态,但是它会将你的鼠标光标移开并用它来点击屏幕。我希望这有帮助!