java中Selenium簡單使用


前言

Selenium 是一個用於Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。

環境配置

下載對應瀏覽器驅動

這里使用Chrome瀏覽器,根據自己當前安裝Chrome的版本來選擇,下載地址,放到一個指定目錄下,如 D:\Temp\chromedriver.exe.

引入Selenium的maven依賴

maven中央倉庫

<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-java</artifactId>
  <version>3.141.5</version>
</dependency>

代碼測試

這里我們使用Selenium完成一個小功能

打開百度,搜索"selenium 中文官網",新開一個窗口打開第一個搜索的結果。

代碼實現如下

import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class Client {

  public static void main(String[] args) throws InterruptedException {
    //配置瀏覽器驅動地址
    System.setProperty("webdriver.chrome.driver",
        "D:\\Temp\\chromedriver.exe");
    //打開Chrome瀏覽器
    WebDriver webDriver = new ChromeDriver();
    TimeUnit.SECONDS.sleep(5);
    //打開百度網站
    webDriver.get("https://www.baidu.com");
    TimeUnit.SECONDS.sleep(2);
    //輸入框輸入搜索關鍵詞 selenium 中文官網
    webDriver.findElement(By.id("kw")).sendKeys("selenium 中文官網");
    TimeUnit.SECONDS.sleep(2);
    //點擊百度一下按鈕
    webDriver.findElement(By.id("su")).submit();
    TimeUnit.SECONDS.sleep(2);
    //查詢所有搜索的結果
    List<WebElement> resultElements = webDriver.findElements(By.className("result"));
    if (!resultElements.isEmpty()) {
      //找到第一條結果的第一個鏈接
      List<WebElement> aTagElements = resultElements.get(0).findElements(By.tagName("a"));
      if (!aTagElements.isEmpty()) {
        //新開一個窗口打開此鏈接
        String href = aTagElements.get(0).getAttribute("href");
        System.out.println(href);
        ((JavascriptExecutor) webDriver).executeScript(String.format("window.open('%s')", href));
      }
    }
    TimeUnit.SECONDS.sleep(10);
    //關閉瀏覽器
    webDriver.quit();
  }

}

這里需要用到一些HTML中定位元素的知識,如根據Id,class,標簽名稱定位元素等。執行效果如下

基本原理

Selenium 自己定義了一套協議 The WebDriver Wire Protoco,幾乎可以操作瀏覽器做任何事情,包括打開、關閉、最大化、最小化、元素定位、元素點擊、上傳文件等,每個瀏覽器都實現了這套協議,就是WebDriver驅動。java向WebDriver發送http請求,WebDriver調用對應瀏覽器的本地API,並將返回結果封裝成json返回給java。

參考

selenium 使用教程詳解-java版本
WebDriver工作原理
Selenium Webdriver原理終於搞清楚了!
WebDriver官方文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM