搭建WebDriver(Java)開發環境
本想自己寫個總結的,可是感覺這個寫的就已經很好了,所以直接轉載了。
原文地址:http://lib.csdn.net/article/softwaretest/23523
1. 所需軟體及版本
1) 作業系統: Win7 旗艦版
2) Eclipse: 3.5.1
3) JDK: java7
4) WebDriver: selenium-java-2.46.0
5) IEDriverServer_64.exe
呃,不要問我哪兒下的安裝包,網上,自己搜吧,你一定可以找到的,哈!
2. 開發環境搭建
預設已經安裝了JDK和Eclipse,這不是我們關注的重點,在此只說明如何才能將WebDriver用起來,步驟如下:
2.1 新建一個Java工程
開啟Eclipse,新建一個Java工程WebDriverDome,如果你係統中安裝了多個JDK,請把工程的JRE指定為java7,我們的約定,免得後續因為我在工程中用到java7的一些新功能,你找我問怎麼你不能用的,哼!
2.2 將WebDriver相關JAR包新增到工程編譯路徑下
selenium-java-2.46.0從網上下載下來是一個壓縮包,將這個壓縮包解壓縮後包括這樣一些檔案及資料夾:
我們將其中的libs資料夾及兩個JAR包拷貝到新建的工程目錄下新建的資料夾WebDriver Libs中:
當然你不拷貝也是可以的,但為了避免以後移動了這些檔案,工程找不到報錯,就拷貝吧。
接著將這些JAR包新增到工程的編譯路徑下:
1) Package Explore視窗中選中新建的工程,點選右鍵,選擇【Properties】選單項
2) 在彈出的【Properties for WebDriverDome】對話方塊中,選擇【Java Build Path】-【Libraries】tab頁,點選【Add JARs…】按鈕
3) 在彈出的【JAR Selection】對話方塊中,選中WebDriver所有的JAR包後,點選【OK】按鈕
新增完成後,在工程目錄中會新增一個【Referenced Libraries】資料夾,包含所有上一步新增的JAR包
好了,嗯,就這麼簡單,其實有使用Eclipse開發過Java專案的人,一看這些JAR包就知道怎麼用了,考慮到很多測試人員程式碼經驗少,就寫一下吧,呵!
接下了,讓我們一起寫我們的第一個用例——登入。
3. 第一個用例及遇到的問題
第一個用例就叫……呃,TestCase1吧,嗯,是不是很高大上,哈!
在工程的src目錄下新建一個包(package)com.webdriver.demo,在包下建立一個類(class) TestCase1:
3.1 最初的程式碼
在這個類裡面,我們將開啟被測系統的登入頁面,輸入使用者、密碼,然後點選登入按鈕,實現登入系統的功能。程式碼如下,記得這是最開始的程式碼,隨著之後遇到的問題,我們會不斷修改程式碼以解決這些問題:
package com.webdriver.demo; import java.io.IOException; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.ie.*; public class TestCase1 { public static void main(String[] args) { // 開啟登陸頁面 System.setProperty("webdriver.ie.driver", System.getProperty("user.dir")+"\\IEDriverServer.exe"); WebDriver driver = new InternetExplorerDriver(); driver.get("http://192.168.1.127:7001/WebSite/Login.jsp?WebView=LoginHome"); driver.manage().window().maximize(); //輸入使用者密碼 CharSequence[] csUser = new CharSequence[1]; csUser[0] = "daiw"; WebElement txtboxUser = driver.findElement(By.name("userName")); txtboxUser.sendKeys(csUser); CharSequence[] csPW = new CharSequence[1]; csPW[0] = "1"; WebElement txtboxPW = driver.findElement(By.name("password")); txtboxPW.sendKeys(csPW); //點選登入按鈕 WebElement btnLogin = driver.findElement(By.id("btnLogin")); btnLogin.click(); //關閉WebDriver物件 driver.close(); } } |
簡單解釋一下:
1) 第一部分是開啟系統登入頁面,因為使用的是IE瀏覽器,首先要設定指定IEDriverServer.exe的路徑,為了方便,我把IEDriverServer.exe放置在了工程根目錄下,並
用System.getProperty("user.dir")來獲取這個目錄的絕對路徑。接著就是建立一個WebDriver例項來連線系統登入頁面,並將視窗最大化。
2) 第二部分是填寫使用者和密碼,關鍵是獲取到這兩個文字輸入框,我們可以通過檢視網頁的原始檔獲得(在網頁上點選右鍵,選擇【檢視原始檔】即可),下面是這兩個文
本輸入框的html程式碼,紅色方框內就是By.name()的引數
3) 第三部分是點選登入按鈕登入主頁,獲取登入按鈕與獲取使用者/密碼輸入框類似,但是通過id來獲取的,檢視原始檔找到這個按鈕的id作為By.id()的引數即可
4) 最後記得關閉WebDriver物件
3.2 第一個問題:IE安全設定
上面的程式碼,ms很簡單,也很好理解,那就執行試試吧:在類TestCase1內碼表上點選右鍵,選擇右鍵選單項【Runas】-【JavaApplication】。
就在我們滿懷著期待等著我們的第一個用例可以正常地開啟登陸頁面,成功登陸系統時,它竟然,報錯了……就在第2行程式碼……
怎麼辦?還好,我們有度娘!!!搜了又搜了,終於明白這都是IE安全設定惹的禍!開啟IE瀏覽器,點選選單【工具】-【Internet選項】,在彈出的【Internet選項】對話方塊中,選擇【安全】tab頁,把所有項的【啟動保護模式】都去勾選後,點選【確定】按鈕。
3.3 第二個問題:預設瀏覽器
嗯,這下可以了吧,再來執行一次……怎麼可能,還是這一行報錯?!難道連度娘都欺騙我?!!
且慢!報錯內容有變……“目前不是預設的瀏覽器……”,這個好熟悉啊,難道是因為當前的預設瀏覽器不是IE,有提示資訊?!嗯,這個我知道怎麼不讓它提示,先試試吧。還是【Internet選項】對話方塊中,選擇【程式】tab頁,去勾選關於預設瀏覽器的提示。
3.4 第三個問題:關閉IEDriverServer.exe
終於看到熟悉的登陸介面,登陸成功,然後關閉瀏覽器……,一切是如此的prefect,生活是如此的美好,可以去喝杯咖啡或者tea了……
等等,怎麼Eclipse介面看著有點不對呢?到底是哪兒不對了?
為什麼【Terminate】按鈕是紅色的?不是一切都已經結束了嗎?開啟工作管理員看看吧
你看你看,IEDriverServer.exe沒有被關閉!!!自己動手吧……
// 關閉IEDriverServer.exe try{ Runtime.getRuntime().exec("tskill IEDriverServer"); }catch(IOException ie){ System.out.println("failed to close IEDriverServer......"); ie.printStackTrace(); } |
把這段程式碼加到關閉WebDriver物件之後,Runtime.getRuntime().exec()用來執行外部程式,這個函式會丟擲IOException,需用try/catch處理。