如何在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+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告