如何在Java中使用Selenium WebDriver处理动态Web表格?


处理动态Web表格通常是Web自动化测试中最大的障碍之一,使用Selenium WebDriver是一种高效的浏览器自动化方法。虽然其强大的功能集能够与网站元素进行交互,但处理动态表格需要额外的技术,以有效地提取和定位数据;在这种情况下,Java提供了各种方法来无缝处理动态表格。

借助Java中Selenium WebDriver的适应性和功能,测试人员能够通过高效和精确地自动化单元或行之间的交互来有效和准确地利用动态Web表格。在本教程中,我们将介绍使用Selenium WebDriver处理动态表格的策略和最佳实践;特别是关于高效和精确地使用Selenium WebDriver遍历动态表格。

Selenium WebDriver

Selenium WebDriver是一个越来越流行的Java库,用于自动化Web浏览器。Selenium WebDriver拥有强大的API,可以与网站元素交互并执行操作以及从页面收集信息,它为自动化浏览器会话提供了强大的解决方案。

要将Selenium WebDriver与Java一起使用,首先要为每个Web浏览器(Chrome/Firefox等)组装合适的驱动程序可执行文件,并将Selenium依赖项添加到您的项目中。

配置完成后,您可以创建WebDriver接口的实例并启动Web浏览器窗口。在这里,您可以使用findElement()和sendKeys()等方法导航到各种URL,并执行诸如点击、提交表单或提取数据等操作。

WebDriver driver = new ChromeDriver();

方法

以下是使用Java中的Selenium WebDriver处理动态Web表格的几种方法。

  • 使用XPath

  • 使用CSS选择器

方法1:使用XPath

XPath是一种优雅而强大的语言,用于在XML文档(包括网站)中查找元素。在使用Java中的Selenium WebDriver处理动态Web表格时,XPath尤其宝贵。

为了有效地处理动态Web表格,首先要检查其结构并识别可以作为XPath表达式构建块的各个属性或模式。使用它,您可以使用position()、contains()或starts-with()等函数来处理不同网页上变化的行或列。

XPath表达式完成后,WebDriver提供findElement()或findElements()方法,这些方法使用该表达式作为其定位器,并允许高效地与其内容进行交互。

算法

  • 找到并识别您希望访问的动态Web表格的结构和元素。

  • 检查任何可用于创建XPath表达式以定位所需元素的唯一属性或模式。

  • 基于已识别的属性或模式创建XPath表达式。

  • 实例化WebDriver实例并导航到托管动态表格的网站。

  • 使用WebDriver findElements()方法,传入XPath表达式作为定位器。

  • 检索与XPath表达式匹配的元素列表。

  • 遍历元素列表允许用户访问所需数据或执行所需操作。

  • 处理整个过程中出现的任何异常或错误。

  • 完成动态Web表格的工作后,关闭WebDriver。

示例

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

public class DynamicWebTableExample {
   public static void main(String[] args) {
      // Set up ChromeDriver path
      System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");

      // Create ChromeDriver instance
      WebDriver driver = new ChromeDriver();

      // Open the webpage
      driver.get("https://www.techlistic.com/2017/02/automate-demo-web-table-with-selenium.html");

      // Locate the table element
      WebElement table = driver.findElement(By.xpath (//*[@id="post-body-1325137018292710854"]/div[1]/div[1]/div[5]/table/thead/tr/th[1]"));

      // Find all rows in the table
      List<WebElement> rows = table.findElements(By.xpath(".//tr"));

      // Iterate through each row and print cell values
      for (WebElement row : rows) {
         List<WebElement> cells = row.findElements(By.xpath(".//td"));
         for (WebElement cell : cells) {
            String cellText = cell.getText();
            System.out.println(cellText);
         }
      }

      // Close the browser
      driver.quit();
   }
}

请注意,必须将“path/to/chromedriver”替换为系统上ChromeDriver可执行文件的实际位置。

输出

Structure
Country
City
Height
Built	
Rank
…
Burj Khalifa	
UAE	
Dubai	
829m	
2010	
1	
Clock Tower Hotel	
Saudi Arabia	
Mecca	
601m	
2012	
2	
Taipei 
101	
Taiwan	
Taipei	
509m	
2004	
3	
Financial Center	
China	
Shanghai	
492m	
2008	
4	

方法2:使用CSS选择器

CSS选择器提供了一种有效的方法,可以通过分析快速定位使用Java中的Selenium WebDriver处理动态Web表格时的元素。通过仔细查看表格的结构,您可以识别可以使用CSS选择器定位的特定属性或模式——例如,类名、元素类型或属性值都可以提供帮助!轻松访问元素。

WebDriver的findElement()或findElements()方法通过传入CSS选择器作为定位器元素,提供了一种有效的方法来查找动态Web表格中的元素,并允许您有效地与所需元素进行交互。

算法

  • 使用CSS选择器来定位动态Web表格结构中的唯一属性或模式。

  • 基于已识别的属性或模式创建CSS选择器。

  • 初始化WebDriver并导航到包含动态Web表格的网站。

  • 使用您的CSS选择器作为定位器来使用其findElements()功能,使用WebDriver findElements()方法。

  • 尽快检索与CSS选择器匹配的元素列表。

  • 遍历元素列表以访问所需信息或采取所需步骤。

  • 解决过程中出现的任何异常或错误。

  • 完成动态Web表格的工作后,关闭WebDriver。

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

public class DynamicWebTableExample {
   public static void main(String[] args) {
      // Set up ChromeDriver path
      System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");

      // Create ChromeDriver instance
      WebDriver driver = new ChromeDriver();

      // Open the webpage
      driver.get("https://www.techlistic.com/2017/02/automate-demo-web-table-with-selenium.html");

      // Locate the table element
      WebElement table = driver.findElement(By.cssSelector("tsc_table_s13"));

      // Find all rows in the table
      List<WebElement> rows = table.findElements(By.cssSelector("tr"));

      // Iterate through each row and print cell values
      for (WebElement row : rows) {
         List<WebElement> cells = row.findElements(By.cssSelector("td"));
         for (WebElement cell : cells) {
            String cellText = cell.getText();
            System.out.println(cellText);
         }
      }

      // Close the browser
      driver.quit();
   }
}

输出

Structure
Country
City
Height
Built	
Rank
…
Burj Khalifa	
UAE	
Dubai	
829m	
2010	
1	
Clock Tower Hotel	
Saudi Arabia	
Mecca	
601m	
2012	
2	
Taipei 
101	
Taiwan	
Taipei	
509m	
2004	
3	
Financial Center	
China	
Shanghai	
492m	
2008	
4

结论

在本教程中,我们了解到,了解如何在Java中使用Selenium WebDriver管理动态Web表格对于Web自动化和数据提取任务至关重要。通过使用XPath或CSS选择器等定位器,开发人员可以快速定位表格元素,并高效地导航行和列以提取相关数据。

动态Web表格使得能够高效地处理大量信息,并根据特定条件采取适当的操作,提取有价值的数据以进行进一步的分析、存储或验证。通过正确理解和执行Java中的Selenium WebDriver,开发人员能够有效地处理动态表格,同时使用Selenium WebDriver自动化各种工作流程——通过Selenium WebDriver自动化数据驱动的工作流程。

更新于:2023年7月25日

1K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告