我的自動化測試歷程(Selenium+TestNG+Java+ReportNG+Jenkins)


原地址:http://blog.csdn.net/shilinjie_8952/article/details/53380373?locationNum=11&fps=1

測試環境:Java+Selenium+TestNG,Jenkins持續集成。

測試代碼

代碼結構

采用頁面對象模型(Page Object),減少UI修改后,對代碼的影響。

這里寫圖片描述
Java編寫,采用TestNG測試框架。

先說點概念的:

  • Selenium 
    Selenium是一套完整的Web應用程序測試系統,它包含了測試的錄制(Selenium IDE)、編寫及運行(Selenium Remote Control)和測試的並行處理(Selenium Grid)。Selenium的核心Selenium Core基於JsUnit,完全由JavaScript編寫,因此可運行於任何支持JavaScript的瀏覽器上。 
    Selenium Core:Selenium的核心部分,它由一些純js代碼組成, 可以運行在windows/linux的不同browser上,而IDE是在core的基礎上的一種應用, 通過UI實現類似QTP/Winner的腳本錄制回放功能,它是Selenium IDE 和 Selenium RC 的引擎。 
    Selenium IDE: FireFox 的一個插件,支持腳本錄制。 
    Selenium RC: Selenium Remote Control,是客戶端利用各種編程語言,通過網絡向Selenium Server發送指令,Selenium Server接收到測試指令后,啟動瀏覽器並向其發出JavaScript調用實現對Html頁面的全面追蹤,並通過網絡把執行結果返回給調用者。 
    Selenium WD: Selenium WebDriver。Web驅動。 
    Selenium Grid:允許同時並行地、在不同的環境上運行多個測試任務,極大地加快 Web 應用的功能測試。 (沒有用過,不太了解)

  • TestNG 
    TestNG是一個測試框架,使用@Test控制測試的執行,執行后,自動輸出測試報告。

環境搭建

Java運行環境

根據個人電腦系統類型選擇對應的jdk安裝包下載(jdk-8u5-windows-x64.exe或jdk-7u45-windows-i586.exe)下載完成之后,打開軟件進行安裝。

  • 配置環境變量

    系統環境變量JAVA_HOME:d:\Java\jdk1.8.0_05(寫 自己安裝的jdk地址)

    系統環境變量Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

    系統變量CLASSPATH:;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

配置完成之后,在doc下輸入javac,如果出現用法:javac。。,證明配置好了

JDBC配置

Jdbc用於java讀取sql server數據庫。 
數據庫安裝就不多說了,我本地64位計算機,jdk1.8,Sql Server 2008R2。

  1. 下載Microsoft JDBC Driver 6.0 (sqljdbc_6.0.7728.100_chs.tar.gz) 
    官網地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=11774 
    我只留下了sqljdbc4.jar
  2. 配置環境變量CLASSPATH 
    新增:C:\sqljdbc4;( 我放在了C盤根目錄下)
  3. 復制包到相關目錄下 
    sqljdbc4.jar文件拷到 
    E:\Program Files\Java\jdk1.8.0_05\jre\lib\ext 
    E:\Program Files\Java\jre8\lib\ext 
    目錄下,分別拷貝一份(看你的安裝目錄了)

Java開發工具

eclipse-standard-kepler-SR1-win32-x86_64

相關包導入

  • TestNG 
    TestNG框架相關: 
    bsh-2.0b4.jar,jcommander.jar,snakeyaml.jar這三個包。 
    在org.testng.eclipse_6.9.9.201510270734中lib中,我把整個文件夾(rg.testng.eclipse_6.9.9.20151027073)放在了eclipse所在的目錄:\eclipse\features\org.testng.eclipse_6.9.9.201510270734\lib ,之后在引入這三個包。

  • Selenium 
    selenium-server-standalone-2.48.2.jar

  • Jxl.jar 
    用於讀取excel表格

瀏覽器

瀏覽器使用火狐瀏覽器39.0.3,雖然版本比較低,但是與selenium版本兼容,需要安裝組件:firepath

頁面元素

定位

通過頁面元素的固定屬性,來確定元素。可以通過id,name,className,tagName,cssSelector,linkText,partialLinkText等屬性來定位,不太好定位的元素,可以使用xpath方式。

    1. 通過id定位

driver.findElement( By.id("Text1"))

    1. 通過name定位

driver.findElement( By.name("輸入"))

    1. 通過xpath定位

driver.findElement( By.xpath("html/body/div[1]/p[1]/label/input"))

    1. 通過linkText定位鏈接

driver.findElement( By.linkText ("這是一個鏈接")),需要完整匹配文字

    1. 通過partialLinkText定位鏈接

driver.findElement( By. partialLinkText ("鏈接")),不需要完整匹配文字

    1. findElements()

定位多個元素,返回一個list,List elements,通過elements.get(index).click();進行遍歷操作,index從0開始。 
注意:如果屬性中有空格,就只能使用xpath方法確定元素。

元素操作

1.文本框賦值

sendKeys("你好!")

2.清空文本框

clear()

3.獲取文本框中內容

getAttribute("value")

4.點擊

.click()

5.下拉框

  • 選擇 
    首先定義一個下拉框對象: 
    Select select = new Select(driver.findElement(By.xpath("//*[@id='select_k1']"))); 
    第二步,通過對象定位所選的下拉框內容,三種方法:
    //通過可見文本去選擇 select.selectByVisibleText("哈爾濱"); //通過html中的value值去選擇 select.selectByValue("heb"); //通過index(索引從 0 開始) 選擇 select.selectByIndex(2); 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 獲取下拉框已選值 
    使用getFirstSelectedOption()獲得所選的項,再通過getText()獲得值:

    select. getFirstSelectedOption().getText()

6.復選框

7.單選按鈕

//選中  
click();  
//判斷單選框是否被選中,返回布爾值
isSelected();  
  • 1
  • 2
  • 3
  • 4
  • 5

8.頁面彈框處理(alert)

//聲明對話框變量
Alert alert = driver.switchTo().alert();
//獲取彈框中的文字
alert.getText()
//點擊彈框中的確定
alert.accept();    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

9.表單(Form)

Form 中的元素的操作和其它的元素操作一樣,對元素操作完成后對表單的提交:

WebElement approve = driver.findElement(By.id("approve"));
approve.submit(); 
//只適合於表單的提交,例如百度搜索框輸入關鍵字后按回車鍵進行搜索
  • 1
  • 2
  • 3
  • 4

10.上傳文件

//定位上傳控件  
WebElement upload = driver.findElement(By.id("替換成實際的定位的值"));   
//定義了一個本地文件的路徑  
String filePath = "d:\text.txt";  
//為上傳控件進行賦值操作,將需要上傳的文件的路徑賦給控件  
upload.sendKeys(filePath);  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

11.拖拉

//定義第一個元素  
WebElement element1 =driver.findElement(By.XX));   
//定義第二個元素   
WebElement element2= driver.findElement(By.XX));   
//將第一個元素拖拽到第二個元素  
(new Actions(driver)).dragAndDrop(element1, element2).perform();   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

12.鼠標懸停

Actions action = new Actions(driver);  
action.moveToElement(driver.findElement(By.XX)).perform();  
  • 1
  • 2
  • 3

13.滾動頁面至某元素出現

JavascriptExecutor js = (JavascriptExecutor) driver;  
js.executeScript("arguments[0].scrollIntoView(true);", driver.findElement(By.XX));   
  • 1
  • 2
  • 3

執行用例

使用TestNG中的@Test執行用例。 
@Beforeclass 在執行類之前執行, @Afterclass在執行類之后執行

輸出結果

TestNG

TestNG自帶的結果,html類型。

ReportNG

1.配置:

  • 下載 
    三個包:guice-3.0.jar,reportng-1.1.4.jar,velocity-dep-1.4.jar,導入到項目中;

  • 配置監聽 
    Windows->preference-TestNG,配置如下圖:

這里寫圖片描述

關閉默認監聽,改為: 
org.uncommons.reportng.HTMLReporter

  • 配置xml文件 
    新增:

    <listener class-name="org.uncommons.reportng.HTMLReporter" />

注明:我放在了前面 
2.二次開發 
反編譯工具:jd-gui.exe(打開導入文件即可)或jad.exe和net.sf.jadclipse_3.3.0.jar 
2.1 配置:

下載jad.exe和jadclipse(需要下載支持eclipse版本的,我的eclipse是4.3.0)。 
將jad.exe放在java目錄下:E:\Program Files\Java\jdk1.8.0_05\jre\bin; 
下載地址:http://download.csdn.net/detail/shilinjie_8952/9674940 
將net.sf.jadclipse_3.3.0.jar拷貝到:XX\eclipse\plugins下面,重啟eclipse 
打開之后,選擇Eclipse->Window->Preferences->Java,設置如下圖:

這里寫圖片描述

配置打開.class默認方式: 
.class和.class without source都要修改為默認值是JadClipse

這里寫圖片描述

  
注意:如果修改完成后,打開的.class文件全是注釋,說明Jad的路徑不正確。 
有時這個反編譯的不好用,可以配合jd-gui.exe或者其他反編譯軟件一起查看源碼。 
2.2 修改源碼 
思路:新建一個工程,導入需要的包,按照ReportNG創建目錄和java文件,肯定會有些錯誤,修改一(因為是反編譯的,所以會有些問題)能編譯通過就可以,(我的是最笨的,一個一個創建的java文件,應該有更好的辦法)。按照需求修改源碼,右鍵工程,就可以導出jar了。

元素管理

兩種方法都可以對元素進行管理:

  1. Excel文件存儲元素 
    可以將元素統一存儲在excel中,在執行用例之前,統一讀取到數組中,包括:編號,名稱,查找方法,值,描述。

這里寫圖片描述

  1. 數據庫存儲元素 
    可以將元素通過工具直接插入到數據庫中保存,在執行用例之前,統一讀取到數組中,包括:編號,名稱,查找方法,值,描述等字段。 
    這里寫圖片描述

用例管理 
用例采用excel進行管理,用sheet區分不同功能,儲存相關需要驗證的字段,固定列:第一列(編號),倒數第二列(預期結果),最后一列(錯誤類型),三列固定的值,用於在代碼中使用。 
這里寫圖片描述

持續集成

采用Jenkins+Ant+Svn實現。 
Jenkins是基於Java開發的一種持續集成工具,用於監控持續重復的工作,功能包括:持續的軟件版本發布/測試項目、監控外部調用執行的工作。 
Ant:形象來說,你要把代碼從某個地方拿來,編譯,再拷貝到某個地方去等等操作,這里用來:從svn上簽出到某個文件夾下—>編譯—>執行用例

Jenkins配置

  1. 安裝jdk 
    步驟參考本文環境搭建-Java運行環境。
  2. 下載Jenkins 
    通過官網下載:https://jenkins.io/index.html 
    這里寫圖片描述

下載下來的是一個msi文件,直接點擊安裝,默認安裝,時間挺長的,而且好多插件裝不上,沒關系,用到再哪個裝哪個。 
裝完之后,訪問:http://127.0.0.1:8080/ ,需要登錄,登錄名:admin,admin的密碼保存在安裝目錄Jenkins\secrets\initialAdminPassword文件中。 
3. 插件安裝 
Ant Plugin Ant Plugin:執行build.xml 文件 
SVN Publisher plugin:通過SVN簽出源碼 
HTML Publisher Plugin:將測試結果顯示在Jenkins中 
4. 系統配置 
系統管理—Global Tool Configuration,配置jdk和ant 
這里寫圖片描述

注意:登錄就去有時會報錯,錯誤大概就是插件沒有安裝好,去系統設置里面,找一下報錯的插件,裝上就好了。步驟如下: 
這里寫圖片描述

找到插件,勾選,點擊下面直接安裝: 
這里寫圖片描述

安裝過程中可能會出現下載插件失敗的情況,可以根據失敗提示中的下載地址,下載到本地,選擇“高級”上傳下載的插件,就會自動安裝了:

這里寫圖片描述

節點配置: 
有時候沒有選項:Launch slave agents using Java Web Star 
解決:系統管理-Configure Global Security-隨機選取勾上 tcp port for JNLP agents,原來是禁用的

這里寫圖片描述

Ant配置

  1. Jdk安裝 
    參考本文環境搭建-Java運行環境
  2. Ant 
    下載:http://ant.apache.org/srcdownload.cgihttp://download.csdn.net/detail/shilinjie_8952/9689638下載。 
    這里寫圖片描述

環境變量: 
ant_home:E:\ant\apache-ant-1.9.7-bin\apache-ant-1.9.7,bin目錄所在路徑 
Path: %ANT_HOME%\bin ant.bat所在路徑 
在doc下,測試:ant.bat,出現下圖配置成功:

這里寫圖片描述

Jenkins使用

1.創建節點 
這里寫圖片描述 
點擊ok 
進入配置節點: 
這里寫圖片描述

創建好之后,如下圖: 
這里寫圖片描述

啟動節點:點擊“Launch”,下載,之后,雙擊下載到的slave-agent.jnlp文件,或在doc下執行紅框中的那一串(我用命令啟動提示Unable to access jarfile slave.jar),都可以啟動,啟動好如下圖: 
這里寫圖片描述

2.創建任務 
這里寫圖片描述

點擊“創建一個新任務”,填寫任務名稱,選擇自由風格,如下圖: 
這里寫圖片描述

設置源碼管理:添加svn源碼路徑,設置svn的用戶名密碼 
這里寫圖片描述

構建觸發器:設置何時什么頻率進行構建 
圖~~

我設置的是:每天17點28分構建,28 17 * * *說明: 
第一個參數代表的是分鍾 minute,取值 0~59; 
第二個參數代表的是小時 hour,取值 0~23; 
第三個參數代表的是天 day,取值 1~31; 
第四個參數代表的是月 month,取值 1~12; 
最后一個參數代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。 
所以 28 17 * * * 表示的就是每天的17點28構建一次。 
構建:選擇Execute Windows batch command,填寫ant 
這里寫圖片描述

或者選擇Invoke Ant: 
這里寫圖片描述

構建后,需要顯示一下測試報告,采用publish html report方式,實際上就是讀取一個html文件,顯示在jenkins里面的Html Report中 
這里寫圖片描述

到此,任務就創建好了。 
構建的過程是:先利用svn簽出源碼,然后根據構建中的ant命令或Invoke Ant方式執行構建,實際上就是在源碼文件夾中尋找build.xml文件,並執行,接下來需要說明一下被執行的build.xml文件如何配置。 
3.配置build.xml文件 
這個配置很重要,決定了能否執行測試用例 
這里寫圖片描述 
4.構建 
可以按照構建觸發器中的設置進行構建,也可以立刻構建查看各項是否設置正確:

這里寫圖片描述

構建過程中查看控制台,可以查看到過程:

這里寫圖片描述

執行完用例之后,通過HTML Report查看結果

這里寫圖片描述

問題與解決方法

1.問題:構建過程中,不顯示瀏覽器 
解決方法:不使用系統級服務,而是手動啟動Jenkins。 
我的電腦->管理->服務和應用程序->服務,將jenkins服務禁用,並且禁止啟動,自行用命令啟用

    java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar "E:\Program Files (x86)\Jenkins\jenkins.war"

最好寫成bat文件,內容:

echo "Jenkins CI automation testting"  
java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar "E:\Program Files (x86)\Jenkins\jenkins.war"  
pause

每次啟動通過bat文件啟動

2.問題:構建報錯:編碼GBK的不可映射字符 
解決方法:在build.xml中,javac下,增加,build.xml中有注釋。 
3.問題:報告顯示不正確,index中沒有值 
解決方法:在啟動時,用:java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar “E:\Program Files (x86)\Jenkins\jenkins.war”啟動。 
4.遺留問題:操作后,需要向測試人員發送郵件,郵件發送失敗提示:SendFailedException message: 553 authentication is required,126 smtp7,DsmowADX5VYXxztYRH8tCQ–.15695S2 1480312600。待解決。


免責聲明!

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



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