7

下面是一個例子代碼:如何在使用Selenium的表格中查找特定的行?

<div id="productOrderContainer"> 
<table class="table gradient myPage"> 

所以這個表中productOrderContainer是有幾列,這取決於幾件事情將有幾行,所有有幾個列。一個例子是:

我想要做的是例如獲取此表的第一行。 (行具有的id,如:<td rowspan="1">),然後再次例如在此行跨度尋找一個特定值在特定<div>

所以在psudo碼是什麼我想說的是:

給我的表,讓我的第n行,讓我的價值在<div id='something'>

回答

25

你可以嘗試以下

int index = 0; 
WebElement baseTable = driver.findElement(By.className("table gradient myPage")); 
List<WebElement> tableRows = baseTable.findElements(By.tagName("tr")); 
tableRows.get(index).getText(); 

您還可以重複tablerows執行任何你想要的功能。

+0

+1看起來很酷! –

+0

謝謝,我會試試這個。 –

+0

這看起來並不正確。 'WebDriver.findElement(By.className(「」))'將定位文檔中的每個*元素,而不是OP所尋找的表格。所以下一行將收集整個文檔中的所有'',而不是在特定的表中。 –

2

好以前,我用的是你能找到的WebElement裏面的方法:

WebElement baseTable = driver.findElement(By.tagName("table")); 
WebElement tableRow = baseTable.findElement(By.xpath("//tr[2]")); //should be the third row 
webElement cellIneed = tableRow.findElement(By.xpath("//td[2]:)); 
String valueIneed = cellIneed.getText(); 

請注意,我發現找到WebElement實例內。

以上是Java代碼,假設driver變量是WebDriver

+0

由於'WebElement.findElement(By.xpath(...))'解釋了文檔上下文中的XPath定位器,而不是像其他所有的'By.whatever()'那樣在元素上下文中解釋,所以不會像寫入那樣工作。 –

5

健康的情況下你想要的:

int rowNumber=...; 
string value = driver.findElement(By.xpath("//div[@id='productOrderContainer']/table/tbody/tr[" + rowNumber +"]/div[id='something']")).getText(); 

換句話說,找到<DIV>與包含在rowNumber個內ID「東西」 <TABLE><TABLE>包含在<DIV>的ID爲「productOrderContainer」中,然後得到它的文本值(這就是我相信你的意思是「讓我的值在<div id='something'>

0
(.//*[table-locator])[n] 

其中n代表特定的行。

1

,如果你要訪問的表格單元格

WebElement thirdCell = driver.findElement(By.Xpath("//table/tbody/tr[2]/td[1]")); 

如果你想訪問嵌套的表格單元格 -

WebElement thirdCell = driver.findElement(By.Xpath("//table/tbody/tr[2]/td[2]"+//table/tbody/tr[1]/td[2])); 

欲瞭解更多詳情,請訪問該Tutorial

相關問題