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'>
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.
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 rowNumber
th <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'>
"
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
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
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();
(.//*[table-locator])[n]
où n
représente la ligne spécifique.