一、WebDriver框架開發實戰
1、框架的思想
(1)什么是框架?
- 框架是可以被應用開發者定制的應用骨架
(2)為什么要寫框架?
- 提高腳本可維護性
- 提高編寫腳本的速度
- 提高腳本可閱讀性
(3)框架的幾個要素?
- driver管理,等待管理,常用方法封裝,LOG,常用類封裝,數據,失敗重跑等等
2、前期准備-框架搭建前期步驟
- 通過IDEA新建個項目名TestAutomation2019的Maven工程
- 導入Selenium和TestNG對應的jar包
- 在工程根目錄新建一個driver文件夾,放置driver
- 新建一個包:com.lixx
3、Driver管理
- 在com.lixx下新建driver包
- 在driver包下新建SeleniumDriver類
- 封裝driver
- 代碼實例演示
- 測試
package com.lixx.drivers; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.edge.EdgeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.ie.InternetExplorerDriver; public class SeleniumDriver1 { public static WebDriver driver; public static WebDriver initialDriver(String browser){ //獲取當前工程根目錄 String path = System.getProperty("user.dir"); if (browser.equals("chrome")){ System.setProperty("webdriver.chrome.driver", path + "/driver/chromedriver.exe"); driver = new ChromeDriver(); }else if (browser.equals("ie")){ System.setProperty("webdriver.ie.driver", path + "/driver/IEDriverServer.exe"); driver = new InternetExplorerDriver(); }else if (browser.equals("firefox")){ driver = new FirefoxDriver(); }else if (browser.equals("edge")){ System.setProperty("webdriver.edge.driver", path + "/driver/MicrosoftWebDriver.exe"); driver = new EdgeDriver(); }else { System.out.println("您輸入的瀏覽器名稱有誤,請確認!"); } return driver; } }
4、元素等待方法封裝
- 在com.autoframework下新建element包
- 在element包下新建WebElementUtils類並繼承SeleniumDriver類
- 二次封裝findElement和findElements方法
- 代碼實例演示
- 測試
5、Log4j整合
- 配置pom.xml文件,添加log4相關jar包
- 在工程根目錄下新建configs文件夾並新建log4j.properties文件
- 在log4j.properties配置文件中加入需要的配置
- 新建com.lixx.logger包
- 在logger包下新建LoggerController類
- 代碼示例
- 測試
6、框架常用類整合
常用類封裝-隨機數封裝
- 在com.autoframework下新建tools包
- 在tools包下新建RandomNum下
- 實現時間戳和隨機數生成
- 部分常用方法封裝實例演示
- 測試
截圖方法封裝
Assert類封裝
通過TestNg做數據驅動
PO理念的引入
監聽錯誤自動重跑和截圖
- 從github上下載已經封裝好的程序 https://github.com/NetEase/arrow
- 復制到項目里面,修改各個類導入包的路徑
- 刪除我們不想要PowerEmailableReporter.java文件
- 在config文件下新建config.properties文件,並添加如下:retrycount=1
- 修改ConfigReader.java類,讀取配置文件路徑
- 添加自動截圖方法到TestResultListener.java類
- 在運行的.xml文件里面添加監聽