Как найти определенные строки в таблице с помощью Selenium?

вот пример кода:

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

таким образом, эта таблица в productOrderContainer имеет несколько столбцов и в зависимости от нескольких вещей будет иметь несколько строк, которые все имеют несколько столбцов. Пример:

то, что я хочу сделать, это например сделать первую строку этой таблицы. (строки имеют идентификаторы, такие как:<td rowspan="1">), а затем снова, например, в этом диапазоне строк найдите определенное значение в определенном <div>

Итак, в psudo-коде, что я хочу сказать есть:

Дайте мне таблицу, дайте мне n-ю строку, дайте мне значение в <div id='something'>

6 ответов


вы можете попробовать следующие

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

вы также можете перебирать tablerows для выполнения любой функции, которую вы хотите.


вы хотите:

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

другими словами, найдите <DIV> с идентификатором "что-то", содержащимся в rowNumberth <TR> на <TABLE> содержится в <DIV> с идентификатором "productOrderContainer", а затем получить его текстовое значение (что, как я считаю, вы подразумеваете под " получить мне значение в <div id='something'>"


Ну раньше я использовал подход, который вы можете найти внутри 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();

обратите внимание, что я нахожу внутри обнаружено WebElement экземпляра.

выше приведен код Java, предполагая, что driver переменная является здоровым экземпляром WebDriver


Если вы хотите получить доступ к ячейке таблицы

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

Если вы хотите получить доступ к вложенной таблице ячейки -

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

для получения более подробной информации посетите это учебник


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

здесь n представляет определенную строку.


следующий код позволяет указать номер строки / столбца и получить результат значение ячейки:

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();