首頁 >Java >java教程 >如何使用Java中的Selenium WebDriver處理動態Web表格?

如何使用Java中的Selenium WebDriver處理動態Web表格?

WBOY
WBOY轉載
2023-09-05 22:53:02749瀏覽

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

處理動態Web表格通常是Web自動化測試中最大的障礙之一,使用Selenium WebDriver可以有效地自動化瀏覽器。儘管其強大的功能集可以與網站元素進行交互,但處理動態表格需要額外的技術,以便有效地提取和定位資料;在這種​​情況下,Java提供了各種方法來幫助無縫處理動態表格。

使用Selenium WebDriver在Java中的適應性和功能,測試人員能夠透過有效且準確地自動化單元格或行之間的交互,有效地利用動態網頁表格。在本教程中,我們將介紹使用Selenium WebDriver處理動態表格的策略和最佳實踐;特別是關於如何透過Selenium WebDriver高效和準確地導航動態表格。

Selenium WebDriver

Selenium WebDriver是一個越來越受歡迎的Java庫,專為自動化網頁瀏覽器而設計。具有強大的API可以與網站元素進行互動、執行操作以及從頁面中獲取信息,Selenium WebDriver為自動化瀏覽器會話提供了強大的解決方案。

要使用Java與Selenium WebDriver,首先需要為每個Web瀏覽器(Chrome/Firefox等)組裝適當的驅動程式可執行文件,並將Selenium依賴項新增至您的專案中。

一旦設定完成,您可以建立WebDriver介面的實例並啟動一個網頁瀏覽器視窗。從這裡,您可以使用findElement()和sendKeys()等方法導航到不同的URL,還可以執行點擊、提交表單或提取資料等操作。

WebDriver driver = new ChromeDriver();

方法

以下是使用Selenium WebDriver在Java中處理動態Web表格的幾種方法。

  • 使用XPath

  • 使用CSS選擇器

方法1:使用XPath

XPath 是一種優雅而強大的語言,用於在包括網站在內的 XML 文件中尋找元素。在使用 Selenium WebDriver 和 Java 處理動態網頁表格時,XPath 尤其有價值。

要有效處理動態Web表格,首先要對其結構進行檢查,並識別出可以作為XPath表達式建構塊的個別屬性或模式。透過使用position()、contains()或starts-with()等函數,您可以處理不斷變化的行或列,適應不同的網頁。

一旦您的XPath表達式完成,WebDriver提供findElement()或findElements()方法,這些方法使用該表達式作為定位器,並允許高效地與其內容進行交互

演算法

  • 定位並識別您希望造訪的動態網頁表格的結構和元素。

  • 檢查任何可以協助建立XPath表達式以定位所需元素的唯一屬性或模式。

  • 根據已確定的屬性或模式建立XPath表達式。

  • 實例化一個WebDriver實例並導航到託管動態表的網站。

  • 使用WebDriver的findElements()方法,將XPath表達式作為定位器傳入

  • 將與XPath表達式相符的元素作為清單檢索

  • 瀏覽元素清單使用戶能夠存取所需的資料或執行所需的操作。

  • 處理在整個過程中出現的任何異常或錯誤

  • 完成使用動態網頁表格後,關閉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	

使用CSS選擇器的方法

CSS選擇器為在使用Selenium WebDriver和Java處理動態Web表格時快速定位元素提供了有效的方法。透過仔細觀察表格的結構,您可以識別出可以使用CSS選擇器定位的特定屬性或模式,例如類別名稱、元素類型或屬性值都可以幫助您!以便輕鬆存取元素。

WebDriver的findElement()或findElements()方法透過將CSS選擇器作為定位器元素傳入,為在動態Web表格中尋找元素提供了高效的方法,並允許您有效地與所需元素進行交互

演算法

  • 利用CSS選擇器來定位動態網頁表格結構中的唯一屬性或模式。

  • 基於已確定的屬性或模式建立CSS選擇器。

  • 初始化WebDriver並導航到具有動態Web表格的網站。

  • 使用WebDriver的findElements()方法,並使用CSS選擇器作為定位器,以使用其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选择器等定位器,开发人员可以快速定位表格元素,并有效地导航行和列以提取相关数据。

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

以上是如何使用Java中的Selenium WebDriver處理動態Web表格?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除