gpt4 book ai didi

java 。 Selenium 网络驱动程序。从表格中获取单元格值

转载 作者:行者123 更新时间:2023-12-01 10:09:04 25 4
gpt4 key购买 nike

这是我的 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 ">user1@mail.com</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 ">&quot;</td>
</tr>
</tbody>
</table>

所以我需要的是检索单元格值。另一件事是,当通过浏览器的源代码选项查看代码时,它看起来与上面相同。但是当使用 Firefox 的 firebug 时,它还显示值位于

<span></span>

标签

我知道 xPath 就是解决方案。在过去的两个小时里,我尝试了很多方法,但都没有成功。当然,我在 SO 上看到过类似问题的解决方案,但不知何故它们不适合我。

我正在尝试做的事情:

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

最佳答案

/**
* match a string to the text of a table cell and return that row.
*
* @param table the table the data is in
* @param cellTextEquals the text to identify the row e.g. unique ID
* @param intCellToFind the column index in which to look for that text
* @return table row
*/
protected WebElement getRowFromTable(WebElement table,
String cellTextEquals, int intCellToFind) {
explicitWaitForElementToBeVisibleAndClickable(table);
WebElement tableBody = table.findElement(By.tagName("tbody"));
List<WebElement> rows = tableBody.findElements(By.tagName("tr"));
for (WebElement row : rows) {
List<WebElement> td = row.findElements(By.tagName("td"));
if (td.size() > 0
&& td.get(intCellToFind).getText().equals(cellTextEquals)) {
return row;
}
}
return null;
}

/**
* match a string to the text of a cell and return the text of
* another specified cell in that row
*
* @param table the table the data is in
* @param cellTextEquals the text to identify the row e.g. unique ID
* @param intCellToFind the column index in which to look for that text
* @param intCellToReturn the column index of the cell text you want to return
* @return text of a specific cell in an html table
*/
protected String getTextFromTableCell(WebElement table, String cellTextEquals,
int intCellToFind, int intCellToReturn) {
WebElement row = getRowFromTable(table, cellTextEquals, intCellToFind);
List<WebElement> td = row.findElements(By.tagName("td"));
if (td.get(intCellToFind).getText().equals(cellTextEquals)) {
return td.get(intCellToReturn).getText();
}
return null;
}

/**
* Gets an element from a table, either button or tagName, from a table.
*
* @param table the table the data is in
* @param cellTextEquals the text to identify the row e.g. unique ID
* @param intCellToFind the column index in which to look for that text
* @param intCellToReturn the column index of the cell where the element is you want to return
* @param buttonText the button text if it's a button element you want
* @param tagName the tag name of the element i=icon, a=link etc.
* @return Element By.tagName or button
*/
protected WebElement getElementFromTableCell(WebElement table,
String cellTextEquals, int intCellToFind, int intCellToReturn,
String buttonText, String tagName) {
WebElement row = getRowFromTable(table, cellTextEquals, intCellToFind);
if (row != null) {
List<WebElement> td = row.findElements(By.tagName("td"));
if (td.get(intCellToFind).getText().equals(cellTextEquals)) {
if (!buttonText.equals("")) {
return td.get(intCellToReturn).findElement(By.xpath(
"//button[contains(text(),'" + buttonText + "')]"));
} else {
return td.get(intCellToReturn)
.findElement(By.tagName(tagName));
}
}
}
return null;
}

关于 java 。 Selenium 网络驱动程序。从表格中获取单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36263315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com