Как найти определенные строки в таблице с помощью 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>
с идентификатором "что-то", содержащимся в rowNumber
th <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]));
для получения более подробной информации посетите это учебник
следующий код позволяет указать номер строки / столбца и получить результат значение ячейки:
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();