2017-07-14 62 views
0

我的表看起來如下: CLM1 CLM2 CLM3硒搜索文本在TD和獲得同一行的另一個TD

  1. 圖1b喜
  2. 2 C你好
  3. 3 d喜

現在需求是我必須找到所有'嗨',然後單擊同一行的其他單元格。對於例如在第一次發生時,我必須點擊1,然後再次點擊3.

我能找到'嗨'下面的代碼,但如何找到相同行上的相應單元格。

List rows = driver.findElements(By.xpath(「// span [text()='hi']」));

<table> 
<tr class="abc"> 
<td class = "efg"> 
<a id="asg" >1</a> 
</td> 
</tr> 
<tr class="abc"> 
<td class = "efg"> 
<span >1</span> 
</td> 
</tr> 
<tr class="abc"> 
<td class = "efg"> 
<span >1</span> 
</td> 
</tr> 
</table> 

請忽略錯字,因爲我從手機打字。 任何幫助將不勝感激。

+0

你可以張貼鏈接到網站或甚至發佈html代碼。目前很難想象它的外觀。 –

+0

[Selenium webdriver通過匹配來自其他列的文本獲取同一行中相鄰列的文本的可能的副本](https://stackoverflow.com/questions/27710460/selenium-webdriver-get-text-of-adjacent-column-in -same-row-by-matching-text-from) –

+0

您可以根據您提供的HTML DOM改寫問題的逐字逐句嗎?我只能看到一個字母'1'。仍然不知道你是如何找到'hi'和'hello'兩者的。謝謝 – DebanjanB

回答

0

這裏是C#中簡單的東西。我希望你能夠將它轉換成java。

var tableRows = driver.FindElements(By.TagName("tr")); 
foreach(var tableRow in tableRows) 
{ 
    var td = tableRow.FindElements(By.TagName("td")); 
    if(td[2].Text.Contains("hi")) 
    { 
     td[0].FindElement(By.TagName("a")).Click(); 
    } 
} 
1

By.xpath("//td[./span[text()='hi']]/../td[1]")將返回該匹配行的第一列。

0

如果我理解你應該使用XPath:

.//yourow/span[not(text()='Hi')][..//span[text()='Hi'] ]

你得到所有「兄弟」或HTML樹「姐妹」,它不具有文本嗨,但在同一行的單元格中包含文本「你好」

相關問題