如何使用 Selenium 查找表中的特定行?
我们可以使用 Selenium WebDriver 查找表中的特定行。表在 html 文档中使用 <table> 标记标识。每个表都包含一个 <tr> 标记来表示行,和一个 <td> 标记来表示列。若要遍历表格行和列,我们使用 findElements() 方法。
要计算表中一共有多少行,我们可以使用可用于列表的 size() 方法 −
List <WebElement> l=driver.findElements(By.tagName("tr")); int s= l.size();
要计算表中一共有多少列,我们可以使用可用于列表的 size() 方法 −
List <WebElement> m=driver.findElements(By.tagName("td")); int t= m.size();
让我们考虑一下下面的表,并获取类型为 TYPE,自动化工具为 UFT 的值。
表中 html 结构的描述如下 −
示例
代码实现。
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import java.util.concurrent.TimeUnit; public class TableHandling{ public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "C:\Users\ghs6kor\Desktop\Java\chromedriver.exe"); WebDriver driver = new ChromeDriver(); String url = " https://sqengineer.com/practice-sites/practice-tables- selenium/"; driver.get(url); driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); // identify table WebElement mytable = driver.findElement(By.xpath("//table[@id='table1']/tbody")); //identify rows of table. List<WebElement> r_table = mytable.findElements(By.tagName("tr")); String b_xpath = "//table[@id='table1']/tbody/tr["; String a_xpath = "]/td[1]"; //calculate rows number with size() int rs_c = r_table.size(); //iterate rows of table and check matching condition for (int r = 2;r <= rs_c; r++) { String n = driver.findElement(By.xpath(b_xpath + r + a_xpath)).getText(); if(n.contains("UFT")){ // get text of matching cell String celtxt=driver.findElement(By.xpath("//table[@id='table1']/tbody/tr["+r+"]/td[2]")).getText(); System.out.println("The cell data at particular row is:" + celtxt); break; } } driver.quit(); } }
输出
广告