1. 程式人生 > >使用Selenium通過瀏覽器對網站進行自動化測試

使用Selenium通過瀏覽器對網站進行自動化測試

  說明:本文只是一個getStart示例,關鍵在於讓自己(新手)能快速地對Selenium自動化測試有個大概的認識,下面開始。

1.準備

  1. eclipse、jdk、maven
  2. 新建好一個maven專案
  3. 下載好FireFox、Chrome、IE,最好是預設安裝
  4. 下載好chromedriver.exe和IEDriverServer.exe

2.目標

  通過執行Java程式碼能自動地開啟FireFox、Chrome、IE三個瀏覽器對百度網站進行自動化測試。
  測試內容為:

  • 開啟瀏覽器
  • 開啟百度網站
  • 列印百度網站的Title
  • 在輸入框中輸入“上海”並進行搜尋
  • 判斷性的搜尋頁面的Title是否含有“上海”關鍵字
  • 列印新搜尋頁面的Title
  • 關閉瀏覽器

3.開始編碼

1)修改pom.xml

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

  通過增加上述依賴,maven會下載好所有需要的依賴包。
2)使用FireFox對網站自動化測試


  新建java類取名為ExampleForFireFox.java,程式碼如下:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;

public
class ExampleForFireFox { public static void main(String[] args) { // 如果你的FireFox沒有安裝在預設的目錄,那麼必須在程式中設定,告知去哪裡尋找FireFox System.setProperty("webdriver.firefox.bin", "D:\\Mozilla Firefox\\firefox.exe"); // 建立一個FireFox的瀏覽器例項 WebDriver driver = new FirefoxDriver(); // 讓瀏覽器訪問www.baidu.com driver.get("http://www.baidu.com"); // 獲取網頁的Title System.out.println("Baidu's Title is:" + driver.getTitle()); // 通過id找到搜尋輸入框的DOM WebElement element = driver.findElement(By.id("kw")); // 在搜尋框內輸入關鍵字 element.sendKeys("上海"); // 提交搜尋輸入框所在的表單 element.submit(); // 等待10秒讓搜尋頁面載入,判斷新頁面的Title為“上海”則說明新頁面載入完畢 (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { return d.getTitle().startsWith("上海"); } }); // 顯示新頁面的Title System.out.println("new page's title is:" + driver.getTitle()); // 測試完畢,關閉瀏覽器 driver.quit(); } }

  Run As Java Application成功。
3)使用Chrome對網站自動化測試
  新建java類取名為ExampleForChrome.java,程式碼如下:

import java.io.IOException;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;

public class ExampleForChrom {
    public static void main(String[] args) throws IOException {
        // 配置chromeDriver
        System.setProperty("webdriver.chrome.driver", "D:\\chromedriver\\chromedriver.exe");
        // 建立一個chrome的瀏覽器例項
        WebDriver driver = new ChromeDriver();
        // 讓瀏覽器訪問www.baidu.com
        driver.get("http://www.baidu.com");
        // 獲取網頁的Title
        System.out.println("Baidu's Title is:" + driver.getTitle());
        // 通過id找到搜尋輸入框的DOM
        WebElement element = driver.findElement(By.id("kw"));
        // 在搜尋框內輸入關鍵字
        element.sendKeys("上海");
        // 提交搜尋輸入框所在的表單
        element.submit();
        // 等待10秒讓搜尋頁面載入,判斷新頁面的Title為“上海”則說明新頁面載入完畢
        (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
            public Boolean apply(WebDriver d) {
                return d.getTitle().startsWith("上海");
            }
        });
        // 顯示新頁面的Title
        System.out.println("new page's title is:" + driver.getTitle());
        // 測試完畢,關閉瀏覽器
        driver.quit();
    }
}

  Run As Java Application成功。
4)使用IE對網站自動化測試
  新建java類取名為ExampleForIE.java,程式碼如下:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;

public class ExampleForIE {
    public static void main(String[] args) {
        // 配置ieDriver
        System.setProperty("webdriver.ie.driver", "D:\\iedriver\\IEDriverServer.exe");
        DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
        ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
        // 建立一個IE的瀏覽器例項
        WebDriver driver = new InternetExplorerDriver(ieCapabilities);
        // 讓瀏覽器訪問www.baidu.com
        driver.get("http://www.baidu.com");
        // 獲取網頁的Title
        System.out.println("Baidu's Title is:" + driver.getTitle());
        // 通過id找到搜尋輸入框的DOM
        WebElement element = driver.findElement(By.id("kw"));
        // 在搜尋框內輸入關鍵字
        element.sendKeys("上海");
        // 提交搜尋輸入框所在的表單
        element.submit();
        // 等待10秒讓搜尋頁面載入,判斷新頁面的Title為“上海”則說明新頁面載入完畢
        (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
            public Boolean apply(WebDriver d) {
                return d.getTitle().startsWith("上海");
            }
        });
        // 顯示新頁面的Title
        System.out.println("new page's title is:" + driver.getTitle());
        // 測試完畢,關閉瀏覽器
        driver.quit();
    }
}

  Run As Java Application成功。

4.總結

  Selenium天然支援FireFox,所以在使用FireFox的時候不需要去下載驅動,只需要指定FireFox的安裝目錄即可。甚至,如果你的FireFox是預設安裝的,那麼就不需要如下語句:System.setProperty("webdriver.firefox.bin","D:\\Mozilla Firefox\\firefox.exe");如上程式碼所示,我的FireFox是安裝在D:\Mozilla Firefox\下面的。
  但是,如果使用Chrome或者IE就需要下載相應的驅動程式:chromedriver.exeIEDriverServer.exe然後在程式碼中指定這兩個驅動的存放位置就可以了。此處我的Chrome和IE瀏覽器都是預設安裝的。