我对您的问题的解释是,您希望单元格(td 元素)的 html 与带有文本“Title1”的单元格(td 元素)相邻。在您的示例代码中,这意味着第一个 tr 元素中的第二个 td 元素。
假设解释正确,您可以执行以下操作。请注意,您可以.html
在任何 Watir 元素上使用该方法来获取其 html(作为可以保存到变量的字符串)。
#Find the cell with Title1 and then get the second cell in that row
html = browser.td(:text => 'Title1').parent.td(:index => 1).html
#=> "<td style=\"padding-top:20px\">Data: <br>Data2: <br>Data3: <br>Data4: <br></td>"
如果你想要整行,包括标题,你可以得到 Title1 元素的父元素:
html = browser.td(:text => 'Title1').parent.html
#=> "<tr style=\"cursor:auto\"><td class=\"hyperlink-first\" style=\"padding-top:20px\">Title1</td><td style=\"padding-top:20px\">Data: <br>Data2: <br>Data3: <br>Data4: <br></td><td style=\"text-align:center;\"><img alt=\"SomeData\" src=\"servlet/Chart?filename=jfreechart-onetime-tmp.png\" style=\"position:static\" border=\"0\" height=\"100\" width=\"580\"></td></tr>"
以上假设您要获取的页面上只有 1 个 Title1 元素。如果可能有多个,那么您将需要创建一个包含文本 Title1 的 td 元素的集合,然后为每个元素收集兄弟元素。这将为您提供一个字符串数组。
html = browser.tds(:text => 'Title1').collect do |td|
td.parent.td(:index => 1).html
end
#=> ["<td style=\"padding-top:20px\">Data: <br>Data2: <br>Data3: <br>Data4: <br></td>",
#=> "<td style=\"padding-top:20px\">Data: <br>Data2: <br>Data3: <br>Data4: <br></td>"]
如果 Jano 的解释是正确的,并且您想要标题类似于“Title”的所有行(即“Title1”、“Title2”等),则可以使用正则表达式进行部分文本匹配。以下将为您提供第一个单元格类似于标题的每一行。
html = browser.tds(:text => /^Title\d$/).collect do |td|
td.parent.html
end
#=> ["<tr style=\"cursor:auto\"><td class=\"hyperlink-first\" style=\"padding-top:20px\">Title1</td><td style=\"padding-top:20px\">Data: <br>Data2: <br>Data3: <br>Data4: <br></td><td style=\"text-align:center;\"><img alt=\"SomeData\" src=\"servlet/Chart?filename=jfreechart-onetime-tmp.png\" style=\"position:static\" border=\"0\" height=\"100\" width=\"580\"></td></tr>",
#=> "<tr style=\"cursor:auto\"><td class=\"hyperlink-first\" style=\"padding-top:20px\">Title2</td><td style=\"padding-top:20px\">Data: <br>Data2: <br>Data3: <br>Data4: <br></td><td style=\"text-align:center;\"><img alt=\"SomeData\" src=\"servlet/Chart?filename=jfreechart-onetime-tmp.png\" style=\"position:static\" border=\"0\" height=\"100\" width=\"580\"></td></tr>"]