如何使用Selenium查找表中的特定行?

如何使用Selenium查找表中的特定行?,selenium,selenium-webdriver,web-testing,automated-tests,gui-testing,Selenium,Selenium Webdriver,Web Testing,Automated Tests,Gui Testing,下面是一个示例代码: <div id="productOrderContainer"> <table class="table gradient myPage"> 因此,productOrderContainer中的这个表有多个列,根据不同的情况,它将有多个行,这些行都有多个列。例如: 例如,我想做的是获取此表的第一行。(行具有id,例如:),然后再次在此行span中查找特定中的特定值 所以在psudo代码中,我想说的是:

下面是一个示例代码:

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

因此,productOrderContainer中的这个表有多个列,根据不同的情况,它将有多个行,这些行都有多个列。例如:

例如,我想做的是获取此表的第一行。(行具有id,例如:
),然后再次在此行span中查找特定
中的特定值

所以在psudo代码中,我想说的是:

给我表格,给我第n行,给我

中的值,你可以试试下面的

int索引=0;
WebElement baseTable=driver.findElement(By.className(“table gradient myPage”);
List tableRows=baseTable.findElements(按.tagName(“tr”));
tableRows.get(index.getText();

您还可以在tablerows上迭代以执行任何您想要的功能。

之前,我使用了您可以在
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
的健康实例:

int rowNumber=...;
string value = driver.findElement(By.xpath("//div[@id='productOrderContainer']/table/tbody/tr[" + rowNumber +"]/div[id='something']")).getText();
换句话说,用id“productOrderContainer”定位
行号
中包含id为“某物”的
,然后获取其文本值(我相信您所说的“获取
中的值”)


其中
n
表示特定行。

如果要访问表格单元格

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();
WebDriver=new ChromeDriver();
WebElement base=driver.findElement(By.className(“Table”);
tableRows=base.findElements(按.tagName(“tr”));
List tableCols=tableRows.get([ROW_NUM]).findElements(按.tagName(“td”));
字符串cellValue=tableCols.get([COL_NUM]).getText();

这不会像编写的那样工作,因为
WebElement.findElement(By.xpath(…)
在文档上下文中解释xpath定位器,而不是像其他
By.whatever()
那样在元素上下文中解释xpath定位器。这看起来根本不对。
WebDriver.findElement(By.className(“”)
将定位文档中的每个元素,而不是OP正在查找的表。因此,下一行将收集整个文档中的所有
,而不是特定表中的所有元素。我的错误…By.className不应为空。复制粘贴错误。谢谢@RossPatterson@KorayTugay如果解决方案不适用于,请让m我知道更多的信息。我很乐意帮助你。
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();