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

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

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

借助Selenium WebDriver在Java中的适应性和能力,测试人员能够通过高效准确地自动化单元格或行之间的交互,有效而准确地利用动态Web表格。本教程将介绍使用Selenium WebDriver处理动态表格的策略和最佳实践;具体而言,涉及使用Selenium WebDriver高效准确地导航动态表格。

Selenium WebDriver

Selenium WebDriver是一个越来越受欢迎的Java库,用于自动化Web浏览器。通过强大的API与网站元素交互、执行操作以及收集页面信息,Selenium WebDriver提供了强大的解决方案来自动化浏览器会话。

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

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

WebDriver driver = new ChromeDriver();

方法

这里有几种使用Java中的Selenium WebDriver处理动态Web表的方法。

  • 使用XPath

  • 使用CSS选择器

方法1:使用XPath

XPath是一种优雅而强大的语言,用于在XML文档中查找元素,包括网站。使用Selenium WebDriver在Java中处理动态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选择器为在使用Selenium WebDriver在Java中处理动态网页表时快速定位元素提供了一种有效的方法。通过仔细查看表的结构,您可以确定特定的属性或模式,然后可以使用CSS选择器来定位这些属性或模式 – 例如类名、元素类型或属性值等等都可以帮助您轻松访问元素。

WebDriver的findElement()或findElements()方法通过使用CSS选择器来定位元素,使您能够高效地与所需元素进行交互。

步骤

  • 利用CSS选择器定位动态网页表结构中的唯一属性或模式。

  • 基于已确定的属性或模式创建一个CSS选择器。

  • 初始化WebDriver并导航到具有动态网页表的网站。

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

  • 尽可能快速高效地获取与CSS选择器匹配的元素列表。

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

  • 在过程中处理任何异常或错误。

  • 完成对动态网页表的操作后,关闭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表格使我们能够高效处理大量信息,并根据特定条件采取适当的措施,从而提取有价值的数据用于进一步分析、存储或验证目的。通过适当理解和执行Selenium WebDriver在Java中,开发人员能够有效处理动态表格,同时使用Selenium WebDriver自动化各种工作流程-通过Selenium WebDriver自动化数据驱动的工作流程。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程