我正在使用WATIR进行自动化测试,我需要在变量中复制一个速率值。在下面的示例中(来自网页源代码),我需要变量myrate
具有值2.595
。我知道如何从<input>
或<span>
(见下文)检索价值,但不是直接从<td>
检索价值。有帮助吗?感谢
<TABLE>
<TR>
<TD></TD>
<TD>Rate</TD>
<TD>2.595</TD>
</TR>
</TABLE>
对于<span>
我使用此代码:
raRetrieved = browser.span(:name => 'myForm.raNumber').text
答案 0 :(得分:8)
试试这个,找到你想要的行使用正则表达式匹配包含单词'Rate'的行,然后获取行中第三个单元格的文本。
myrate = browser.tr(:text, /Rate/).td(:index => 2).text
#or you can use the more user-friendly aliases for those tags
myrate = browser.row(:text, /Rate/).cell(:index => 2).text
如果“Rate”一词可能出现在该表中其他textin的其他位置,但始终只是所需行的第二个单元格中的唯一条目,则找到具有该确切文本的单元格,使用父方法定位保存该单元格的行,然后从第三个单元格中获取文本。
myrate = browser.cell(:text, 'Rate').parent.cell(:index => 2).text
使用.cell
&amp; .row
vs .td
&amp; .tr
取决于您,有些人更喜欢标签,其他人喜欢更具描述性的名称。使用您认为使代码最易读或您将使用它的其他人可以使用的任何内容。
注意:上面的代码假定使用Watir-Webdriver或Watir 2.x,它们都使用基于零的索引。对于较旧版本的Watir,请将索引值更改为3
对于记录,我完全赞同其他人关于您发布的代码示例缺乏可测试性的评论。这太可怕了。在使页面更容易测试方面,要求找到适当元素的东西(例如ID值或名称)并不是特定的。
答案 1 :(得分:3)
试试这个:
browser.td(how, what).text
此处的问题是table
,tr
和td
标记没有任何属性。您可以尝试这样的事情(未经测试):
browser.table[0][2].text
答案 2 :(得分:1)
如果这对任何遇到同样问题的人有帮助,那么这对我有用:
browser.td(:text => "Rate").parent.cell(:index, 2).text
谢谢大家