使用WATIR检索<TD>文本

Art*_*uro 4 html ruby automated-tests watir watir-webdriver

我正在使用WATIR进行自动化测试,我需要在变量中复制一个速率值.在下面的例子中(来自网页源代码),我需要该变量myrate具有值2.595.我知道如何从<input>或检索价值<span>(见下文),但不是直接从a <td>.有帮助吗?谢谢

<TABLE>
<TR>
    <TD></TD>
    <TD>Rate</TD>
    <TD>2.595</TD>
</TR>
</TABLE>
Run Code Online (Sandbox Code Playgroud)

对于<span>我使用此代码:

raRetrieved = browser.span(:name => 'myForm.raNumber').text
Run Code Online (Sandbox Code Playgroud)

Chu*_*den 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
Run Code Online (Sandbox Code Playgroud)

如果"Rate"一词可能出现在该表中其他text中的其他位置,但始终只是所需行的第二个单元格中的唯一条目,则找到具有该确切文本的单元格,使用父方法查找该行保存该单元格,然后从第三个单元格中获取文本.

myrate = browser.cell(:text, 'Rate').parent.cell(:index => 2).text
Run Code Online (Sandbox Code Playgroud)

使用.cell&.rowvs .td&.tr 取决于你,有些人更喜欢标签,有些人喜欢更具描述性的名称.使用您认为使代码最易读或您将使用它的其他人可以使用的任何内容.

注意:上面的代码假定使用Watir-Webdriver或Watir 2.x,它们都使用基于零的索引.对于较旧版本的Watir,请将索引值更改为3

为了记录,我完全赞同其他人关于您发布的代码示例缺乏可测试性的评论.这太可怕了.在使页面更容易测试方面,要求找到适当元素(例如ID值或名称)的内容并不是特定的.