web-dev-qa-db-fra.com

Comment trouver des lignes spécifiques dans un tableau avec Selenium?

Voici un exemple de code:

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

Donc, cette table étant dans productOrderContainer a plusieurs colonnes et en fonction de plusieurs choses aura plusieurs lignes qui ont toutes plusieurs colonnes. Un exemple est:

Ce que je veux faire, c'est par exemple obtenir la première ligne de ce tableau. (les lignes ont des identifiants tels que: <td rowspan="1">) Et encore une fois, par exemple, dans cetowspan, recherchez une valeur spécifique dans un <div> spécifique

Donc, en psudo-code, ce que je veux dire est:

Obtenez-moi la table, obtenez-moi la rangée suivante, obtenez-moi la valeur dans <div id='something'>

7
Koray Tugay

vous pouvez essayer de suivre

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

Vous pouvez également parcourir des tables pour exécuter la fonction de votre choix.

32
Prashant Shukla

Tu veux:

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

En d'autres termes, localisez <DIV> avec l'id "quelque chose" contenu dans la rowNumberth <TR> du <TABLE> contenu dans le <DIV> avec l'id "productOrderContainer", puis obtenez sa valeur textuelle (ce que je pense que vous entendez par "obtenez-moi le valeur dans <div id='something'> "

5
Ross Patterson

si vous voulez accéder à la cellule du tableau

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

Si vous souhaitez accéder à une cellule de table imbriquée -

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

Pour plus de détails, visitez ce Tutorial

2
anuja jain

Auparavant, j’avais utilisé l’approche que vous pouvez trouver dans la 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();

Veuillez noter que je trouve à l'intérieur de l'instance WebElement trouvée.

Ce qui précède est du code Java, en supposant que la variable driver est une instance saine de WebDriver

2
Pavel Janicek

Le code suivant vous permet de spécifier le numéro de ligne/colonne et d’obtenir la valeur résultante de cell :

WebDriver driver = new ChromeDriver();
WebElement base = driver.findElement(By.className("Table"));
tableRows = base.findElements(By.tagName("tr"));
List<WebElement> tableCols = tableRows.get([ROW_NUM]).findElements(By.tagName("td"));
String cellValue = tableCols.get([COL_NUM]).getText();
0
(.//*[table-locator])[n]

n représente la ligne spécifique.

0
Anoop Philip