如何使用 Java 中的 Selenium WebDriver 处理静态 Web 表?

javaobject oriented programmingprogramming更新于 2024/6/9 14:42:00

要使用 Java 中的 Selenium WebDriver 处理静态 Web 表,必须遵循一系列程序来提取相关数据并对表组件进行操作。初始步骤涉及使用合适的标识符定位网页上的表。定位后,可通过 HTML 标记(如 <tr> 和 <td>)访问各个行和列。

可以通过迭代扫描每一行和每一列来提取和存储 Web 表中的数据以供进一步处理。此外,还可以执行单击特定单元格或验证表中是否存在某些数据等操作。通过利用 Se-lenium WebDriver 和 Java,静态 Web 表可以通过自动化更有效地管理。

Web 表

使用 Java 中的 Selenium WebDriver 处理 Web 表时,必须与网页上的 HTML 表进行交互。要正确定位表格元素,请使用合适的定位器。找到表格后,使用 `findElements()` 方法检索其所有行,并通过循环遍历它们。在此循环中再次使用 `findElements()` 方法访问每行的每一列。然后可以通过 `getText()` 或 `getAttribute()' 等方法从每列中提取所需的数据。

WebDriver driver = new ChromeDriver();

方法

有多种技术可用于使用 Java 中的 Selenium WebDriver 处理静态 Web 表格。可以使用以下方法:

  • 使用 HTML 表格结构

  • 使用 XPath 轴

使用 HTML 表格结构

要使用 Selenium WebDriver 和 Java 处理静态 Web 表格,您可以使用 HTML 表格结构方法。首先使用其唯一标识符或任何相关的 HTML 属性来识别表格元素。找到后,您可以使用 WebDriver 命令提取表格行和列,并根据需要对其进行迭代。通过引用行和列索引来检索特定单元格值。

此外,您还可以执行与表格相关的操作,例如按列排序、过滤或搜索特定数据。通过利用 WebDriver 的功能和 Java 编程,您可以有效地与静态 Web 表交互、提取数据并无缝执行各种操作。

算法

  • 使用 WebDriver 启动 Web 浏览器。

  • 导航到包含静态 Web 表的所需网页。

  • 使用适当的 WebDriver 命令(例如,通过 ID、类、XPath 等)找到表元素。

  • 通过查找表内的所有"tr"元素来提取表行。

  • 使用循环遍历行。

  • 在每一行中,根据需要提取表单元格("td"元素)或标题单元格("th"元素)。

  • 对单元格数据执行所需的操作(例如,检索文本、验证值等)。

  • (可选)对表格执行排序、过滤或搜索等其他操作。

示例

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class TableExample {
   public static void main(String[] args) {
        // 设置 WebDriver(此处假设为 ChromeDriver)
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        WebDriver driver = new ChromeDriver();
        
        // 导航到所需网页
        driver.get("https://www.techlistic.com/2017/02/automate-demo-web-table-with-selenium.html");
        
        // 查找表元素
        WebElement tableElement = driver.findElement(By.tagName("table"));
        List<WebElement> rows = tableElement.findElements(By.tagName("tr"));
        
        // 遍历每一行
        for (WebElement rowElement : rows) {
            List<WebElement> cells = rowElement.findElements(By.tagName("td"));
            
            // 遍历行中的每个单元格
            for (WebElement cellElement : cells) {
                String cellData = cellElement.getText();
                // 根据需要处理单元格数据
                System.out.print(cellData + "\t");
            }
        
            // 处理完每一行后移至下一行
            System.out.println();
        }
        
        // 关闭浏览器
        driver.quit();
   }
}

输出

Google   Maria Anders        Germany
Meta     Francisco Chang     Mexico
Microsoft    Roland Mendel    Austria
Island Trading    Helen Bennett    UK
Adobe    Yoshi Tannamuri     Canada
Amazon   Giovanni Rovelli     Italy

使用 Xpath 轴

要使用 Selenium WebDriver 和 Java 处理静态 Web 表,您可以使用 XPath 轴,它提供了导航和与表元素交互的强大方法。通过利用 XPath 轴,您可以定位表结构中的特定行、列或单元格。在这种情况下,"祖先"、"后代"和"后续兄弟"轴特别有用。

例如,要提取表行,您可以使用"//table//tr"XPath 表达式。要检索行中的特定单元格,您可以将行 XPath 与"td"轴组合,例如"//table//tr[position()=2]//td[position()=3]"。 XPath 轴在处理复杂的表格结构时具有灵活性和精确性,使您能够高效地处理静态 Web 表格并准确提取所需的数据。

算法

  • 使用 WebDriver 启动 Web 浏览器。

  • 导航到包含静态 Web 表格的所需网页。

  • 构建适当的 XPath 表达式,根据表格、行、列或单元格的位置、属性或内容来定位它们。

  • 使用"祖先"、"后代"或"后续兄弟"等 XPath 轴遍历表格结构并导航到所需的元素。

  • 使用 XPath 表达式或将轴与位置或属性条件组合,从表格单元格中提取必要的数据。

  • 根据需要处理提取的数据(例如,将其存储在变量、执行断言或输出它)。

  • 可选地,通过相应地调整 XPath 表达式,对表执行其他操作,例如排序、过滤或搜索。

  • 使用 WebDriver 命令关闭 Web 浏览器会话。

示例

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class TableExample {
   public static void main(String[] args) {
        // 设置 WebDriver(此处假设为 ChromeDriver)
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        WebDriver driver = new ChromeDriver();
        
        // 导航到所需网页
        driver.get("https://www.techlistic.com/2017/02/automate-demo-web-table-with-selenium.html");
        
        // 检索表格的所有单元格
        List<WebElementa>cells = driver.findElements(By.xpath("//table//tr//td"));
        
        // 遍历每个单元格
        for (WebElement cell : cells) {
            String cellData = cell.getText();
            // 根据需要处理单元格数据
            System.out.print(cellData + "\t");
        }
        
        // 关闭浏览器
        driver.quit();
   }
}	

输出

Google   Maria Anders        Germany
Meta     Francisco Chang     Mexico
Microsoft    Roland Mendel    Austria
Island Trading    Helen Bennett    UK
Adobe    Yoshi Tannamuri     Canada
Amazon   Giovanni Rovelli     Italy

结论

在本教程中,我们了解到,在使用 Java 的 Selenium WebDriver 处理静态 Web 表时,有多种方法可以有效地处理它们。HTML 表结构方法允许您定位表元素并使用合适的定位器(如 By.tagName())遍历行和单元格。XPath Axes 方法提供了使用 XPath 表达式浏览 HTML 结构的灵活性,以找到所需的元素。最后,CSS 选择器提供了一种使用 CSS 选择器语法定位和操作表元素的替代方法。


相关文章