从带有ruby的excel中选择单选按钮

时间:2012-01-31 15:56:49

标签: ruby excel radio-button watir

我想从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">

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

首先让我们尝试让您的代码更容易阅读。请注意评论和其他答案中的所有问题?目前尚不清楚你从电子表格中检索到了什么,以及保存数据“无线电”的变量的命名只是在一段代码(和相关的html)中出现了该词的另一个实例。称之为radio_idradio_valueradio_name,以便向任何人说明应从电子表格中检索哪些内容,以及该变量包含的内容。从现在开始4个月,对你自己也会更有意义。

其次,仔细评估如何正确识别您需要的项目。您的示例HTML仅显示单个无线电控件,但通常这些控件都是成套的,并且通常NAME用于标识公共集合中的无线电控件see the examples on this page。因此,使用name属性通常是识别单选按钮的可怕方法。值或嵌入文本通常是将“正确”的无线电控制从集合中取出的更好方法。

第三,watir单选按钮对象的.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')

肥皂盒:
无线电设备的另一个原因是你不能用鼠标“取消设置”单选按钮,除非在同一组中选择另一个按钮。你几乎从未在网页上看到单独的单选按钮。如果需要一个可以选择或未选择的东西,通常使用'checkbox'元素。如果开发人员使用单个无线电作为“复选框”,通过实现javascript代码使其行为像一个复选框,他们需要(恕我直言)取出并将镜头解雇并替换为开发人员知道如何使用CSS来做这些事情而不是滥用可怜的无线电控制并创建一个如果有人禁用了javascript就无法正常工作的页面。

答案 1 :(得分:0)

首先,将名称从'name'更改为'radio',然后只需使用 set

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