UI自動化測試框架SelenJA介紹

簡介

SelenJA是我封裝的一個基於selenium+testng的自動化測試框架,使用Jenkins來跑自動化用例,並在Jenkins中使用了Allure插件來顯示測試報告

GitHub

https://github.com/Adien-galen/SelenJA 歡迎點star

技術棧

  • Java
  • maven
  • selenium
  • testng
  • allure
  • Jenkins

優點

  • 封裝selenium對元素、瀏覽器的操作,使用起來更簡單
  • 使用PageObject模式對頁面元素和公共操作進行封裝
  • 環境信息通過讀取配置文件獲取
  • 失敗用例重跑
  • 使用allure顯示測試報告,提供失敗截圖、操作步驟、期望結果
  • 使用testng單元測試框架,方便用例的組織以及運行時參數的傳遞

一個例子

public class SogouTest extends BaseTest {

    @Test
    public void test搜狗搜索(){
        String keywords = envProperties.getProperty("keywords");
        String sogouUrl = envProperties.getProperty("sogou.url");
        driver.get(sogouUrl);
        SogouPO.search(keywords);
        //驗證搜索結果第一行是否包含“galen2016的博客”
        String firstResult = OperateElement.waitByXpath("(//*[@class='vrTitle']/a)[1]").getText();
        Assert.assertTrue(firstResult.contains("galen2016的博客"));
    }
}

常用API介紹

  • 初始化webdriver
InitDriver.launchChromeDriver()		//初始化chromedrive配置,並返回一個driver
  • 元素操作

// 通過元素的Xpath,等待元素的出現,返回此元素

 OperateElement.waitByXpath(String xpath)   

// 通過元素的id,等待元素的出現,返回此元素

 OperateElement.waitById(String id)  

// 通過元素的某個屬性,等待元素的出現,返回此元素

 OperateElement.waitByAttribute(String attribute,String value)   

// 通過元素的xpath,等待元素列表的出現,返回List

 OperateElement.waitElesByXpath(String xpath)   

// 通過元素的className,等待元素列表的出現,返回List

OperateElement.waitElesByClassName(String className)   

// 通過html某個標籤中間的text找到元素,並點擊它

OperateElement.clickByText(String text)  

// 通過元素的Xpath,等待元素的出現,並點擊它

OperateElement.clickByCss(String css)   

// 通過元素的某個特定屬性,等待元素的出現,並點擊它

OperateElement.clickByAttribute(String attribute,String value) 

// 用javaScript執行點擊事件

OperateElement.clickByJSBy(By by)   

// 判斷元素是否存在

OperateElement.isElementExsitBy(By locator)  

// 通過元素的Xpath,等待文本框的出現,並輸入

OperateElement.sendKeysByXpath(String xpath,String keys) 

// 拖動元素

OperateElement.dragAndDropBy(WebElement element,int xOffset,int yOffset)  

// 鼠標懸停

OperateElement.mouthHover(WebElement ele,int ms)   
  • 瀏覽器操作

// 通過窗口的索引來切換窗口,index從0開始

OperateElement.switchToWindowByIndex(int index)   

// 關閉除了第一個窗口外的其它窗口

OperateElement.closeWindowHandleNotFirst()   

// 接收alert

OperateElement.acceptAlert()  

// 通過frame的ID切換iframe

OperateElement.switchToFrameById(String id)   
  • 其它

// 線程等待,單位:毫秒

OperateElement.threadSleep(int timeout)   

安裝使用

  • 安裝jdk1.8
  • 安裝maven,我的版本是3.3.9
  • 安裝IDEA
  • clone項目到本地,然後用IDEA打開
  • 安裝Jenkins
  • Jenkins添加Allure插件,可參考:https://blog.csdn.net/galen2016/article/details/88015322
  • Jenkins新增一個job並配置
  • 構建項目
  • 查看Allure報告
    在這裏插入圖片描述

調用原理

在這裏插入圖片描述

項目結構介紹

主目錄:

在這裏插入圖片描述

libs文件夾

存放外部jar包,如jdbc的jar不能通過maven下載,就可以直接下下來放到這裏,然後在pom.xml裏引用

resource文件夾

存放一些資源文件,如測試用例.excel文件

cases包

測試用例文件

common包

在這裏插入圖片描述
BaseTest.java 測試用例的基類,其他測試用例都繼承這個類
InitDriver.java 初始webdriver,可以提供獲取chrome、firefox、ie三個瀏覽器的方法
OperateElement.java 對webdriver的API做了二次封裝
TestngListener 全局監控器,控制失敗用例重跑、截圖、打印測試步驟

pageobject包

對每個測試頁面的元素和公共操作封裝成一個類

utils包

封裝一些實用的工具類,如:讀取excel、xml、配置文件,獲取隨機身份證號碼、地址等

env.properties

測試要用到的url、賬號密碼等可以寫在這個文件裏面

pom.xml

1、管理jar包 2、配置maven-surefire-plugin插件來運行test包下面的代碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章