У меня есть таблица, данные которой изменяются в соответствии с тем, что добавлено и удалено. В таблице есть несколько столбцов Имя, Кол-во, Тип, Статус. Все, что у меня есть, - это текст имени со мной, мне нужно найти поле статуса этой строки, у которого есть это имя.Невозможно захватить элемент в динамической таблице, где у нас есть только текст тега td
Проблема заключается в том, что теги html имеют одинаковые имена классов, и я попытался захватить родительский и родной все, что не удалось. Пожалуйста, найдите HTML структуру таблицы ниже:
<table>
<thead> </thead>
<tbody>
<tr>
<td class = "c1">
<a class = txtclass> text1 </a>
</td>
<td class = "c1"> Qty </td>
<td class = "c2"> type </td>
<td class = "c3">
<div id = "1" class = "status1"> /div>
</td>
</tr>
<tr>
<td class = "c1">
<a> text2 </a>
</td>
<td class = "c1"> Qty </td>
<td class = "c2"> type </td>
<td class = "c3">
<div id = "2" class = "status2"> /div>
</td>
</tr>
</tbody>
</table>
Так что все у меня есть со мной это text2 и мне нужно, чтобы получить со статусом этой строки.
Как я могу продолжить. Я пробовал
List<WebElement> ele = driver.findElements(By.xpath("//*[@class = 'txtClass'][contains(text(),'text')]"));
for(WebElement el1:ele)
{
WebElement parent = el1.findElement(By.xpath(".."));
WebElement child1= parent.findElement(By.xpath("//td[4]/div"));
System.out.println(child1.getAttribute("class"));
}
Это дает мне имя класса статуса первой строки в таблице. же я попытался с
WebElement child = el1.findElement(By.xpath("//following-sibling::td[4]/div[1]"));
я получил то же название, что класс первой строки в таблице. Я понял, что, поскольку имя класса одинаково для всех дочерних элементов, оно всегда захватывает первые элементы строки, а не тот, что из строки.
Пожалуйста, помогите, я застрял здесь надолго, дайте мне знать, если вам нужны какие-либо другие детали.
Извините, @Narendra это не работает.Я получаю все имена классов следующего брата всех строк. а не тот, который имеет текст1. Мне не нужен весь статус всех строк. Только те строки, которые имеют имя как text2. –
@pragyadasgupta, я обновил ответ plz. Если ваше требование получить весь статус, связанный с определенным текстом. – NarendraR
Спасибо, что второй запрос работал для меня, когда я положил td [3] третий список 's' sibling allElements = driver.findElements (By.xpath (".// tr/td [содержит (., 'Text2') ]/следующий-родственный :: тд [3]/дел ")); –