Javascript 查找表';按A列中包含的某些文本替换行,并在同一行中选择B列
我用的是casperjs。当前页面上有一个表,如下所示。我有字符串Javascript 查找表';按A列中包含的某些文本替换行,并在同一行中选择B列,javascript,phantomjs,casperjs,Javascript,Phantomjs,Casperjs,我用的是casperjs。当前页面上有一个表,如下所示。我有字符串“我喜欢的第2行标题”,我想在表中搜索包含此字符串的行 然后单击该行中的按钮,即Clicky按钮2 <table> <!-- ...table header... --> <tr id="row1"> <td>Row 1</td> <td>Title of Row 1</td> <
“我喜欢的第2行标题”
,我想在表中搜索包含此字符串的行
然后单击该行中的按钮,即Clicky按钮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>
一排
第1行标题
点击按钮1
第2排
我喜欢第2行的标题
点击按钮2
我的想法是:
id
。然后我用它组成了一个选择器,并在那一行下找到了按钮。我这样做了,没关系这就是我的想法。我只是想知道,有没有更简洁(或优雅)的方法来实现这一点?我看了一些函数。。。似乎没有什么东西能够通过文本来搜索某物。我想像
getElementsAttribute()
这样的东西可以帮我找到我要找的行的id
。。。但是我找不到那一排 您可以使用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"));
JQuery,如果您有它可用的话。为了匹配上面的示例,您可以使用
casper.click(x("//tr/td[contains(., 'Title of Row 2 which I like')]/following-sibling::td[1]/button"));
$(“td:contains('我喜欢的第2行标题'))
注意它是区分大小写的。我问这个问题是为了避免这样做,伙计。@ArtjomB。这对任何人都没有帮助。谢谢你,你忘了带钥匙了clicking@ArtjomB. 找到DOM元素是目前的问题。这是一个练习,让读者做其他事情。当然,现在他想点击一个按钮。但也许明天他想更改父行的CSS。但是,继续往下投票。好吧,我同意使用jQuery查找元素可以很容易地从实际单击中分离出来,这在casper方法中是不容易实现的,因为需要不同的XPath/CSS选择器。我确实没有询问单击;我知道如何在文档中查找
click()
。这也是一个很好的解决方案,Artjom的稍微不那么复杂,因为我不需要JQuery。我想我需要了解XPath。