2012-01-31 137 views
1

我想从Excel电子表格用于数据驱动的测试选择的单选按钮。选择单选按钮红宝石

我曾尝试以下:

radio=worksheet.cells(rows,"A").value 
browser.radio(:name => 'name').set radio 

我也试过选择作为一个字符串,但得到的错误:

radio=worksheet.cells(rows,"A").value 
string_from_excel = "set" 
browser.send string_from_excel, radio 

单选按钮的代码是:

<input id="radio" type="radio" onclick="setradio(0)" value="0" name="radio"> 

感谢您的帮助

+0

看来你需要调用onclick事件,所以我认为你需要一个'.click'的地方。 (注意:我还没有处理Excel和Watir等YMMV)。这是电子表格的HTML表示吗? – 2012-01-31 16:31:37

+0

No Im实际上从.xlsx文件获取数据 – mike 2012-01-31 19:05:07

+0

您获取了哪些数据?从电子表格? – 2012-02-01 00:24:31

回答

1

首先让我们试着让你的代码有点更容易阅读。注意评论和其他答案中的所有问题?目前还不清楚你在从电子表格中检索什么,并且变量的命名规定数据“无线电”只是在一段代码(和相关的html)中提供了该术语的另一个实例,该代码段已经被这个单词所占据。取名类似radio_idradio_valueradio_name要清楚向任何人应该充分利用电子表格检索,以及究竟该变量包含的内容。从现在起4个月,它对你自己也会更有意义。

其次,仔细评估如何正确识别你所需要的物品。您的示例HTML仅显示一个无线电控制,但通常这些控制集合在一起,并且大多数情况下,NAME用于识别通用集合中的无线电控制,see the examples on this page。因此,使用name属性通常是识别单选按钮的一种可怕方式。价值,或嵌入文本通常是一个更好的方式来获得“正确的”无线电控制。

第三,watir单选按钮对象的.set方法不接受参数,它只是确保指定的特定无线电控制处于'set'状态。对.set的补充是.clear(有关更多信息,请参见Watir RDOC

此外,您的控件在HTML中定义了一个事件处理函数。当控件收到一个onclick事件时,它正在执行一个脚本。因此,在设置它(或者可能而不是设置它)之后,为了使页面正常工作,您可能需要触发onclick事件,以便调用正确的客户端代码。

考虑到这一点我想尝试的代码看起来是这样的

radio_value = worksheet.cells(rows,"A").value 
browser.radio(:value => radio_value).set 
browser.radio(:value => radio_value).fire_event('onclick') 

肥皂盒:
另一个电台的原因进来套是,你不能“未设置”单选按钮用鼠标除了在同一组中选择另一个按钮。您几乎从不会在网页上看到单独的单选按钮。如果需要可以选择或取消选择的单个事物,通常使用“复选框”元素。如果开发人员是使用一个单一的收音机作为一个“复选框”通过执行JavaScript代码,使其像一个复选框,他们需要(恕我直言)是 取出,并拍摄 解雇,取而代之的是谁知道如何使用CSS开发对于这样的事情,而不是滥用穷人的无线电控制,并创建一个页面,如果有人禁用JavaScript,将无法正常工作。

+0

那很好用.....谢谢 – mike 2012-02-01 14:58:12

0

首先,名字从“名”到“广播”的变化,那么就使用设置

browser.radio(:name => 'radio').set 
+0

即时获取以下错误:'assert_exists':无法找到元素,使用{:name =>“radio”}(Watir :: Exception :: UnknownObjectException) – mike 2012-01-31 19:17:50

+1

我将你的html复制到一个文件中并用浏览器打开文件,然后我成功点击了单选按钮。你尝试过吗?也许你没有提供足够的信息让我看到这个问题。你应该提供完整的html(或者至少足以说明你能够重现这个问题。 – 2012-01-31 23:11:37