如何使用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();