zoukankan      html  css  js  c++  java
  • Selenium+Java完整框架搭建(2019完整版)

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

     

  • 相关阅读:
    vivim (十一):文本重排
    vivim (十):接出(复制)
    python的函数
    从oracle11g向oracle9i导数据遇到的一些问题
    vivim (十二):中介字元正则表达式
    DataList如何实现横向排列数据交替行变色!
    跳出率对百度排名的影响越来越大
    asp.net 服务器端控件使用服务器端变量
    .net .用户控件和页面的加载顺序、生命周期
    网站如何让被DOMZ收录
  • 原文地址:https://www.cnblogs.com/xinxin1994/p/11332539.html
Copyright © 2011-2022 走看看