繁体   English   中英

取回 <TD> 使用WATIR的文本

[英]Retrieve <TD> text using WATIR

我正在使用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

试试这个,找到你想要的行使用正则表达式来匹配包含单词'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”一词可能出现在该表中其他text中的其他位置,但始终只是所需行的第二个单元格中的唯一条目,则找到具有该确切文本的单元格,使用父方法查找该行保存该单元格,然后从第三个单元格中获取文本。

myrate = browser.cell(:text, 'Rate').parent.cell(:index => 2).text

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

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

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

尝试这个:

browser.td(how, what).text

这里的问题是tabletrtd标签没有任何属性。 你可以试试这样的东西(未经测试):

browser.table[0][2].text

如果这对任何遇到同样问题的人都有帮助,那就像这样对我有用:

browser.td(:text => "Rate").parent.cell(:index, 2).text

谢谢你们

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM