簡介
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包下面的代碼