问题
Here is an example code:
<div id="productOrderContainer">
<table class="table gradient myPage">
So this table being in productOrderContainer has several columns and depending on several things will have several rows which all have several columns. An example is:
What I want to do is to for example get the first row of this table. ( rows have id's such as: <td rowspan="1">
) And then again for example in this rowspan look for a specific value in a specific <div>
So in psudo-code what I want to say is:
Get me the table, get me the n'th row, get me the value in <div id='something'>
回答1:
you can try following
int index = 0;
WebElement baseTable = driver.findElement(By.className("table gradient myPage"));
List<WebElement> tableRows = baseTable.findElements(By.tagName("tr"));
tableRows.get(index).getText();
You can also iterate over tablerows to perform any function you want.
回答2:
You want:
int rowNumber=...;
string value = driver.findElement(By.xpath("//div[@id='productOrderContainer']/table/tbody/tr[" + rowNumber +"]/div[id='something']")).getText();
In other words, locate <DIV>
with the id "something" contained within the rowNumber
th <TR>
of the <TABLE>
contained within the <DIV>
with the id "productOrderContainer", and then get its text value (which is what I believe you mean by "get me the value in <div id='something'>
"
回答3:
if you want to access table cell
WebElement thirdCell = driver.findElement(By.Xpath("//table/tbody/tr[2]/td[1]"));
If you want to access nested table cell -
WebElement thirdCell = driver.findElement(By.Xpath("//table/tbody/tr[2]/td[2]"+//table/tbody/tr[1]/td[2]));
For more details visit this Tutorial
回答4:
Well previously, I used the approach that you can find inside the 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();
Please note that I find inside the found WebElement
instance.
The above is Java code, assuming that driver
variable is healthy instance of WebDriver
回答5:
(.//*[table-locator])[n]
where n
represents the specific line.
回答6:
The following code allows you to specify the row/column number and get the resulting cell value:
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();
来源:https://stackoverflow.com/questions/14191935/how-to-find-specific-lines-in-a-table-using-selenium