一、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文件里面添加监听