我有很长的页面,我提取了与我的问题相关的tr和td。
<tr>
<td colspan="2"><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$dv$ctl01','')">Save</a> <a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$dv','Cancel$-1')">Back</a></td>
</tr>
<tr>
.............
.............
</tr>
<tr>
<td colspan="2"><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$dv$ctl08','')">Save</a> <a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$dv','Cancel$-1')">Back</a></td>
</tr>
table#ctl00_ContentPlaceHolder1_.DetailsView tbody tr td a
获取4个匹配元素
如何只选择具有"Save"
?
我尝试过这样的事情:
table#ctl00_ContentPlaceHolder1_.DetailsView tbody tr td a:contains('Save')
不起作用
答案 0 :(得分:2)
:contains
伪选择器不属于CSS选择器标准的任何级别。因此,By.cssSelector
不支持它,因此您不能使用vanilla CSS选择器来执行此操作。您还可以尝试其他一些选项。
findElements
返回的元素,获取每个元素的文本,并在找到所需的元素时突破循环。By
类的子类,该类使用Sizzle JavaScript CSS选择器引擎(通常错误地称为“jQuery CSS选择器引擎”)来使用Sizzle引擎来查找元素,因为Sizzle实现了非标准的psuedoselector。答案 1 :(得分:0)
我使用你提供的东西建立了一个小测试,并填写我认为你所提供的东西以外的东西,并且它正在发挥作用。
<html>
<head>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery- ui.css" rel="stylesheet" type="text/css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js">
</script>
<script>
$(document).ready(function() {
$("#contentTable.tableClass tbody tr td a:contains('Save')").css("border", "2px dotted blue");
});
</script>
</head>
<body style="font-size:62.5%;">
<table id="contentTable" class="tableClass">
<tbody>
<tr>
<td colspan="2"><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$dv$ctl01','')">Save</a> <a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$dv','Cancel$-1')">Back </a>
</td>
</tr>
<tr>
<td colspan="2"><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$dv$ctl08','')">Save</a> <a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$dv','Cancel$-1')">Back </a>
</td>
</tr>
</tbody>
</table>
</body>
</html>
我已经简化了你的表id和类值,但我认为你的选择器应该正常工作。选择这些元素后,您要对这些元素做什么?
答案 2 :(得分:0)
如果它们始终是您代码的第一个元素,那么您可以使用:first-child
table#ctl00_ContentPlaceHolder1_.DetailsView tbody tr td a:first-child
xpath方式是
table#ctl00_ContentPlaceHolder1_.DetailsView tbody tr td a[text()='Save']
否则如CSS selector based on element text?中所述,没有CSS方法根据文本来定位元素..