7

Ecco un esempio di codice:Come trovare linee specifiche in una tabella usando il selenio?

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

Quindi questa tabella essere in productOrderContainer ha diverse colonne e in base a diversi cose avranno più righe che hanno tutti diverse colonne. Un esempio è:

Quello che voglio fare è, ad esempio, ottenere la prima riga di questa tabella. (Righe hanno id come ad esempio: <td rowspan="1">) e poi ancora per esempio in questo RowSpan cercare un valore specifico in un determinato <div>

Quindi, in psudo codice quello che voglio dire è:

Get Me tavolo , mi ottenere la fila n'th, mi ottenere il valore in <div id='something'>

risposta

25

si può provare a seguire

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

È inoltre possibile iterare su tablerows per eseguire qualsiasi funzione che si desidera.

+0

+1 sembra freddo! –

+0

Grazie, ci proverò. –

+0

Questo non sembra proprio niente. 'WebDriver.findElement (By.className (" "))' troverà * ogni * elemento nel documento, non la tabella che l'OP sta cercando. Quindi la riga successiva raccoglierà tutti i ' nell'intero documento, non nella tabella specifica. –

2

Bene in precedenza, ho usato l'approccio che si possono trovare all'interno del 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(); 

Si prega di notare che trovo all'interno del trovato WebElement istanza.

Quanto sopra è il codice Java, supponendo che driver variabile è sano istanza di WebDriver

+0

Questo non funzionerà come scritto perché 'WebElement.findElement (By.xpath (...))' interpreta il localizzatore XPath nel contesto del documento, non nel contesto dell'elemento come ogni altro 'By.whatever()'. –

5

Volete:

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

In altre parole, individuare <DIV> con l'id "qualcosa" contenuto all'interno del rowNumber ° <TR> dello <TABLE> contenuto nello <DIV> con l'id "productOrderContainer", quindi ottenere il suo valore di testo (che è ciò che io intendo per "ottenere il valore in <div id='something'>"

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

dove n rappresenta la riga specifica.

1

se si desidera accedere cella di una tabella

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

Se si desidera accedere nidificato cella di una tabella -

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

per maggiori informazioni visita questo Tutorial

Problemi correlati