我使用的是casperjs。当前页面上有一个表格,如下所示。我有字符串"Title of Row 2 which I like"
,我想在表格中搜索包含此字符串的行。
然后点击该行中的按钮,即Clicky button 2
<table>
<!-- ...table header... -->
<tr id="row1">
<td>Row 1</td>
<td>Title of Row 1</td>
<td>
<button ... onClick='some javascript function'>Clicky Button 1</button>
</td>
</tr>
<tr id="row 2">
<td>Row 2</td>
<td>Title of Row 2 which I like</td>
<td>
<button ... onClick='some javascript function'>Clicky button 2</button>
</td>
</tr>
</table>
我的想法是:
"Title of Row 2 which I like"
整行,以获得它所在行的id
。然后用这个我组成了一个选择器,并找到该行下的按钮。我做到了这一点,没关系。这就是我的想法。我只是想知道,是否有更多的 casper (或优雅)方式来做到这一点?我看了一些函数......似乎没有什么能够通过它的文本搜索某些东西。想到像getElementsAttribute()
这样的东西可以得到我正在寻找的行id
......但是我找不到这行。
答案 0 :(得分:1)
您可以使用XPath轻松实现此目的。 CasperJS提供XPath实用程序:
var x = require('casper').selectXPath;
所以你点击这样的按钮:
casper.click(x("//tr[contains(td, 'Title of Row 2 which I like')]//button"));
这假设每行只有一个按钮。如果按钮位于下一个td
,那么您可以使用
casper.click(x("//tr/td[contains(., 'Title of Row 2 which I like')]/following-sibling::td[1]/button"));
答案 1 :(得分:0)
JQuery,如果你有,has a selector that searches for DOM nodes by their text。要匹配上面的示例,您可以使用
$(&#34; td:contains(&#39;我喜欢的第2行的标题&#39;)&#34;)
请注意,它区分大小写。