Java. Selenium webdriver. Obtenir la valeur de la cellule du tableau
Voici un morceau de mon code html
<table class="table_results data ajax" data-uniqueId="20605">
<thead>
</thead>
<tbody>
<tr class="odd">
<td data-decimals="0" data-type="int" class="right data not_null nowrap">1</td>
<td data-decimals="0" data-type="string" data-originallength="5" class="data not_null text ">user1</td>
<td data-decimals="0" data-type="string" data-originallength="40" class="data not_null text ">e38ad214943daad1d64c102faec29de4afe9da3d</td>
<td data-decimals="0" data-type="string" data-originallength="14" class="data not_null text ">[email protected]</td>
<td data-decimals="0" data-type="string" data-originallength="6" class="data not_null text ">Smith</td>
<td data-decimals="0" data-type="string" data-originallength="1" class="data not_null text ">"</td>
</tr>
</tbody>
</table>
Donc ce que j'ai besoin est de récupérer les valeurs des cellules.
Encore une chose, c'est que lors de l'affichage de code via le navigateur et le code source de l'option, il semble même que ci-dessus. Mais lors de l'utilisation de Firefox firebug il montre en outre que les valeurs sont à l'intérieur de
<span></span>
tag
Je sais qu'ici, xPath est la solution. Pour les 2 dernières heures, j'ai essayé beaucoup mais rien n'a fonctionné.
Et bien sûr, j'ai vu des questions similaires solutions sur DONC, mais de toute façon ils ne sont pas adaptés pour moi.
Ce que je suis en train de faire:
WebElement table_element = driver.findElement(By.xpath("//table//tbody"));
ArrayList<WebElement> rows = (ArrayList<WebElement>) table_element.findElements(By.tagName("tr"));
for (WebElement row : rows) {
ArrayList<WebElement> cells = (ArrayList<WebElement>) row.findElements(By.tagName("//td"));
for (WebElement cell : cells) {
System.out.println(cell.getText());
}
}
- fournir
xpath
vous avez essayé et qui la valeur de la cellule que vous souhaitez obtenir - Désolé, impossible de le coller ici, donc il combler être formaté d'une manière appropriée. Je vais l'ajouter à la question
Vous devez vous connecter pour publier un commentaire.
Recherchez le
td
éléments et de les appeler.getText()
méthode:Ici, nous sommes à l'aide de sélecteurs CSS pour localiser les lignes de la table et ensuite rangée de cellules pour chaque ligne du tableau.
essayer de trouver votre table par:
de débogage et de trouver votre table après que vous pouvez faire le code supérieur:
par exemple quelque chose comme...
org.openqa.selenium.InvalidSelectorException. Compound class names not permitted
:nth-child(i)
, où i est le numéro de l'élément affiché.Pour compléter la précédente awnser, si vous avez besoin d'obtenir les textes à partir d'une ligne spécifique, vous pouvez le faire de cette façon:
Dans ce cas, je suis en utilisant
td[2]
pour obtenir la deuxième colonne de la ligne et de comparer le nom d'utilisateur. Vous pouvez chage si le désir comparer un autre champs.Aussi, vous pouvez faire valoir si la requête xpath sélecteur de travail ou si elle est de retour tout ce que vous voulez à l'aide de la console chromée: