使用Selenium通過瀏覽器對網站進行自動化測試
阿新 • • 發佈:2019-01-06
說明:本文只是一個getStart示例,關鍵在於讓自己(新手)能快速地對Selenium自動化測試有個大概的認識,下面開始。
1.準備
- eclipse、jdk、maven
- 新建好一個maven專案
- 下載好FireFox、Chrome、IE,最好是預設安裝
- 下載好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.exe
和IEDriverServer.exe
然後在程式碼中指定這兩個驅動的存放位置就可以了。此處我的Chrome和IE瀏覽器都是預設安裝的。