2012-12-10 53 views
0

我有很長的頁面,我已經提取了與我的問題相關的tr和td。匹配元素/包含使用CSSSelector

<tr> 
<td colspan="2"><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$dv$ctl01','')">Save</a>&nbsp;<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>&nbsp;<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

你可以與我們分享表嗎? –

+0

更新了我的問題 –

+0

'a:contains('Save')'應該可以工作。除非你在問題中沒有包含其他內容。 –

回答

2

:contains假選擇器不是CSS選擇器標準的任何級別的一部分。因此,它不支持By.cssSelector,所以你不能使用香草CSS選擇器。你可以嘗試其他幾個選項。

  • 您可以遍歷findElements返回的元素,獲取每個元素的文本,並在找到所需元素時跳出循環。
  • 您可以使用XPath而不是CSS選擇器。
  • 您可以創建自己的By類的子類,該類使用Sizzle JavaScript CSS選擇器引擎(通常錯誤地稱爲「jQuery CSS選擇器引擎」)使用Sizzle引擎來查找元素,因爲Sizzle實現了非標準psuedoselector。
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>&nbsp;<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>&nbsp;<a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$dv','Cancel$-1')">Back  </a> 
     </td> 
    </tr> 
    </tbody> 

</table> 

</body> 
</html> 

我簡化了你的表id和類的值,但否則我認爲你的選擇器應該工作。一旦你選擇了這些元素,你想要做什麼?

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根據其文本的目標元素的方式..

相關問題