精华内容
下载资源
问答
  • 文章目录介绍项目结构...本人之前自己从头到尾尝试搭建过 selenium 测试框架,之前搭建的太粗糙了,这次重新搭建一个功能齐全的 Web UI 自动化测试框架 功能上支持 PO 模式,支持配置文件驱动,支持多线程测试,支...

    介绍

    GitHub 源码地址:https://github.com/abcnull/webuitest4j

    欢迎大家 Watch Star and Fork!

    本人之前自己从头到尾尝试搭建过 selenium 测试框架,之前搭建的太粗糙了,这次重新搭建一个功能齐全的 Web UI 自动化测试框架

    功能上支持 PO 模式,支持配置文件驱动,支持多线程测试,支持 Slf4j + log4j 日志系统,支持异常截图和 extentreports 测试报告等多种报告模板,支持 jenkins 做数据驱动传参构建,支持 redis 数据存储,甚至支持谷歌的 h5 测试,项目不仅支持本地系统运行浏览器,也支持运行 hub 中的浏览器节点(代码中已写 hub 启动浏览器相关代码),您只需要自己在您的服务器上配置好 hub 以及 node 节点即可使用

    项目结构

    - logs 日志
    - src
    	- main
    		- java
    			- com.abcnull
    				- constant 项目常量
    				- util 项目工具类
    		- resources
    			- log4j2.xml 日志模板
    	- test
    		- java
    			- com.abcnull
    				- base 测试基类
    				- common 共有方法
    				- data 页面数据
    				- listener 测试监听器
    				- locator 页面元素
    				- page 页面操作方法
    				- testcase 测试用例
    				- util 测试工具类
    		- resources
    			- config 项目配置文件
    			- download 下载以及需要上传文件存放处
    			- driver 驱动
    			- report 报告模板
    - target
    - .gitignore 忽略跟踪文件
    - liming_test.xml 李明同学的测试文件
    - pom.xml
    - testng.xml 总的测试文件
    - zhanghua_testng.xml 张华同学的测试文件
    

    搭建流程

    • 1.创建 maven 项目

      idea 创建新的的 maven 项目,选择合适的项目地址,填入 groupid 和 artifactid 等信息,最后生成项目

    • 2.配置忽略跟踪的文件

      确保 idea 中安装了.ignore插件,然后项目下直接创建.gitignore文件,添加项目忽略跟踪的文件,添加内容如下

      # Directory
      .idea/
      logs/
      target/
      
      # File
      *.log
      *.iml
      
    • 3.添加项目依赖

      依赖可以自行到 maven 中央仓库中去拷贝,或者您直接查看 github 项目源码也是可行的。搭建过程中我添加了如下依赖

      lombok				1.18.4
      junit				4.12
      slf4j-api			1.7.25
      log4j-api			2.11.1
      log4j-core			2.11.1
      log4j-slf4j-impl	2.11.1
      testng				6.14.3
      selenium-java		3.141.59
      htmlunit			2.30
      extentreports		3.0.7
      commons-pool2		2.6.1
      jedis				3.0.1
      poi					4.1.0
      poi-ooxml			4.1.0
      

      其中包括基本的 lombok,单元,selenium,testng,报告,jedis,表格操作等依赖

    • 4.日志系统的配置

      这里使用 slf4j 的日志方式,桥接 log4j,也就是采用的是 log4j 日志系统

      项目/src/main/resources下添加 log4j2.xml 文件,内容部分请见此文 slf4j + log4 配置 java 的 log 日志系统

      log4j 和 slf4j 之间有什么区别和联系呢?可以看这篇文章 slf4j 和 log4j 的关系

    • 5.文件结构创建

      可以参照 项目结构 部分的结构
      在这里插入图片描述

    • 6.base 包测试基类编写

      我将 testng 中几个注解标明的有关测试生存周期的方法都放在了 BaseTest 类中,将驱动启动相关的方法放在了 BaseDriver 中,然后 BaseTest 中通过 new BaseDriver 来实例化得到其中的驱动,有人问为什么不弄成 static BaseDriver,因为我要考虑到驱动是线程隔离的,也就是说一个驱动不能在多个线程时被使用,怎么线程隔离呢?要么让这个 BaseDriver 实例化,要么将其或者其中需要的变量放在 ThreadLocal 中。还有 redis 连接池也在 BaseTest 中被初始化了。redis 的很多配置还有 驱动的很多配置并不是直接写在 BaseTest 中或者 BaseDriver 中的,而是通过将配置写进 .properties 文件,然后写一个配置文件读取的工具类来实现配置驱动项目

      BaseDriver 中主要是驱动相关,有一个启动浏览器的方法,支持有 hub 即远程也支持无 hub 即本地的方式,浏览器支持谷歌,火狐,Opera,Edge,IE,还有谷歌的 h5,目前仅谷歌支持运行 h5 脚本,至于是跑 h5 还是不跑 h5,跑哪种手机设备,还有跑哪种浏览器,和是否跑 hub 这些都可以在 testng.xml 中去配置

      驱动的策略是我希望一个线程对应一个驱动和一个 redis 连接
      在这里插入图片描述

    • 7.配置文件和配置文件读取工具类的编写

      配置文件我选择 .properties 文件,里头有驱动的配置,驱动下载路径配置,驱动隐式、显示等待时间的配置等,截图文件格式的配置,redis 连接的配置,redis 连接池配置,配置文件我存放在 test 包的资源文件 config 中

      然后我写了一个 properties 文件读取器,就是一个读配置文件的方法,另一个是取值的方法
      在这里插入图片描述

    • 8.redis 连接池工具类的编写

      redis 连接池连接 redis 服务器,这没得啥说,这个工具类在 BaseTest 中被调用,通过 redis 工具类生成连接,供测试时候存储数据

    • 9.common 公用方法

      编写一个 BrowserCommon 类,其中封装最基本的元素方法,PageCommon 中没写什么代码,主要是想到测试模块时候,各个模块可能页面比较相似,所以可以把一些比较复杂但是各个测试页面通用的代码放在这里。继承关系是测试的 PO 页面继承 PageCommon 再继承 BrowserCommon 类

    • 10.PO 思想写测试用例

      依据 PO 思想写测试用例,写了两个一个是百度页面的,另一个是博主自己博客页面的小测试用例,很简单仅仅作为一个 demo,我把 PO 页面做了下细分,由于考虑到有的页面可能元素较多,数据较多,所以我把页面的元素和数据拆出来了,当然依然满足 PO 思想,页面操作和页面元素以及页面数据

      写完并运行成功后,我们得加上错误截图和测试报告
      在这里插入图片描述

    • 11.错误截图

      写了个监听器,继承了 testng 自己提供的 TestListenerAdapter 类,其中重写了 onTestFailure 方法,来实现出错监听产出报告,方法中调用了一个自己写的截图工具类,工具类定义了截图名称是出错类名加上时间的方式,产出路径是 target 下,然后我在一个测试用例中添加了 assert false,又跑了一个测试用例,成功截图!

    • 12.产出报告

      我弄了两种报告,两种都是要写一个监听器继承了 testng 提供的 IReporter 接口,并重写其中产生报告的方法。其中一种报告我通过该方法提供的参数获取到测试的结果,把结果往一个已经放置于项目中 BeautifulReport 样式的 html 模板中添加数据,可得到产出的报告模板,另一种报告我直接使用了 extentreports 的报告模板,它的代码书写也很简单,我直接从其官网上 copy 了它的 demo,然后稍加修改就行了,您要是想用 allure2,需要您稍微改下 pom 文件,当然也是可行的
      在这里插入图片描述

    • 13.其他一些修改

      包括代码中添加 log 信息,设置了一个优先级监听器,让测试方法会在一个<class>标签中运行完再去运行其他的,添加了一些常量信息,添加 git 跟踪文件,添加几个 testng.xml 并组织测试套件等

    注意点

    1. 没有装 redis 的话也没关系,项目运行也能正常执行测试用例,虽然控制台显示 redis 连接不到,但是执行测试用例产出报告一套流程是没有丝毫影响的

    2. 项目中运行到 BeforeTest 时候会是一个新的线程,一个线程含有一个驱动和一个 redis 连接

    3. pom.xml 文件报红是正常的,并不影响 mvn test 的执行,报红是因为其中进行了外部传参,这个项目可以配置到 jenkins 中,jenkins 的 job 中创建几个参数,这些参数就可以传进 pom 文件中了,再从 pom 文件中成功传入 testng.xml 和测试用例中

    4. 建议采用谷歌浏览器,项目中谷歌驱动是 79 版本的

    待优化

    1. 目前支持谷歌,火狐,欧朋,Edge,IE 浏览器,以后会考虑加上对无界面浏览器和 safari 浏览器的支持

    2. 目前对于 h5 的支持只有谷歌浏览器,往后会考虑 h5 支持火狐

    3. 往后会考虑将 redis 是否启用这一参数加进项目配置文件

    4. 往后会考虑项目中编写该项目的异常类型,目前该项目没有编写其自有的异常类

    展开全文
  • selenium+java+testng+maven测试用例执行,testng执行
  • java+selenium+maven+testng自动化测试框架实例(实际项目)
  • #框架介绍 selenium+java+Maven-TestNG+reportNG+XML • 使用Java作为项目编程语言 • 使用Maven作为项目类型,方便管理架包 • 使用TestNG作为项目运行框架,方便执行测试用例,生成测试报告 • 使用Xml作为...
  • 嗯,首先我想说下,我这个是在Windows搭建的Jenkins,最开始我安装的Jenkins在服务器上,导致我Jenkins构建一直失败,报错如下图: ...1. 编写selenium代码 2. 整理testng.xml文档 3. 搭建本地Jenkins 4...

    嗯,首先我想说下,我这个是在Windows搭建的Jenkins,最开始我安装的Jenkins在服务器上,导致我Jenkins构建一直失败,报错如下图:
    在这里插入图片描述
    我在网上找了很多方法都没有办法解决这个问题,包括更新依赖版本,更新配置等,后面换成Windows版本的Jenkins以后,ok了!!!!

    1. 编写selenium代码
    2. 整理testng.xml文档
    在这里插入图片描述

    3. 搭建本地Jenkins
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200427094648151.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3Nzg2MDE0,size_16,color_FFFFFF,t_70
    在这里插入图片描述
    在这里插入图片描述

    4. 使用pom.xml调用testng.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>cqpgx</groupId>
        <artifactId>main</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <project.build.sourceEncoding>
                UTF-8
            </project.build.sourceEncoding>
        </properties>
    
        <build>
    
            <defaultGoal>compile</defaultGoal>
            <sourceDirectory>src</sourceDirectory>
            <resources>
                <resource>
                    <directory>src</directory>
                    <excludes>
                        <exclude>**/*.java</exclude>
                    </excludes>
                </resource>
            </resources>
    
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.0</version>
                    <configuration>
                        <source>6</source>
                        <target>6</target>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
    
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.2</version>
                    <configuration>
                        <!--<testFailureIgnore>true</testFailureIgnore>-->
                        <suiteXmlFiles>
                        <suiteXmlFile>testng.xml</suiteXmlFile>
                        <!--此处testng.xml即为要运行的testng.xml文件-->
                    </suiteXmlFiles>
                        <testFailureIgnore>true</testFailureIgnore>
                        <useSystemClassLoader>false</useSystemClassLoader>
                        <threadCount> 1 </threadCount>
                        <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
                        <reuseForks>false</reuseForks>
                        <forkedProcessExitTimeoutInSeconds>120</forkedProcessExitTimeoutInSeconds>
                </configuration>
                </plugin>
    
            </plugins>
        </build>
        <dependencies>
            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-api</artifactId>
                <version>3.11.0</version>
            </dependency>
            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-java</artifactId>
                <version>3.5.3</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/log4j/log4j -->
            <!-- https://mvnrepository.com/artifact/log4j/log4j -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/net.sourceforge.tess4j/tess4j -->
            <dependency>
                <groupId>net.sourceforge.tess4j</groupId>
                <artifactId>tess4j</artifactId>
                <version>3.2.1</version>
            </dependency>
    
            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-support</artifactId>
                <version>3.11.0</version>
            </dependency>
            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-chrome-driver</artifactId>
                <version>3.11.0</version>
            </dependency>
            <dependency>
                <groupId>org.testng</groupId>
                <artifactId>testng</artifactId>
                <version>7.0.0-beta1</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/velocity/velocity-dep -->
            <dependency>
                <groupId>velocity</groupId>
                <artifactId>velocity-dep</artifactId>
                <version>1.4</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/com.google.inject/guice -->
            <dependency>
                <groupId>com.google.inject</groupId>
                <artifactId>guice</artifactId>
                <version>3.0</version>
            </dependency>
    
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
            </dependency>
            <!-- reportNg的依赖包 关联testNg ,这个包的主要作用就是对testng原生报告的美化-->
            <dependency>
                <groupId>org.uncommons</groupId>
                <artifactId>reportng</artifactId>
                <version>1.1.4</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.testng</groupId>
                        <artifactId>testng</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>
    </project>
    

    注意!!!!!这里对应执行的是src/test里面的内容,不是main里的哦
    在这里插入图片描述

    5. Jenkins新建job
    在这里插入图片描述
    在这里插入图片描述
    就像上面这样的设置保存就好

    6. 上面配置好以后就可以执行了哦
    代码位置:

    展开全文
  • Java+selenium TestNG框架搭建和介绍

    千次阅读 2018-07-19 17:03:54
    TestNG介绍: 1、安装TestNG; 2、新建一个TestNG类 (1) ...(3)选中上面新建的TestNG_Test项目右键选择Build Path,然后选择Confige Build Path,...,选择selenium的jar包导入 ( (5)现在就可以开始中写sel...

    TestNG介绍:

    1、安装TestNG;

    2、新建一个TestNG类

    (1)

    (2)

    (3)选中上面新建的TestNG_Test项目右键选择Build Path,然后选择Confige Build Path,弹出如下的界面:

    (4)点击上图中右侧栏的"Add  External JARs",选择selenium的jar包导入

    (5)现在就可以开始中写selenium的代码了:

    1、开始写之前需要在项目下新建一个Tools文件夹,把浏览器的driver放进去

    2、写上代码:

    package TestNG_test;
    
    import org.testng.annotations.Test;
    import org.testng.annotations.BeforeClass;
    import org.testng.annotations.AfterClass;
    import org.openqa.selenium.*;
    
    public class TestNG_test01 {
    	
    	WebDriver driver;
    	
      @Test
      public void Openbaidu() {
    	  driver.get("https://www.baidu.com");
    	  driver.findElement(By.id("kw")).sendKeys("Selenium");
    	  driver.findElement(By.id("su")).click();
    
    	  
      }
      @BeforeClass
      public void beforeClass() {
    	  
    	  System.setProperty("webdriver.chrome.driver",".\\\\Tools\\\\chromedriver.exe")
    	  driver=new ChromeDriver();
    	  
    	  driver.manage().window().maximize();//窗口最大化
    
      }
    
      @AfterClass
      public void afterClass() {
    	  driver.quit();
      }
      
    
    }
    

    3、Run as -TestNG test,但是发现什么也没有:

    4、出现上面这个问题的原因是TestNG Library没有导入项目

    5、现在可以右键run as TestNG了

    6、优化一下代码,显式等待和隐式等待:

    展开全文
  • 1.问题一 java.lang.NoClassDefFoundError: org/testng/IInvokedMethodListener2 解决: 降低testng版本号: org.testng testng 6.9.10 test

    1.问题一
    java.lang.NoClassDefFoundError: org/testng/IInvokedMethodListener2
    降低testng版本号:

    <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>6.9.10</version>
      <scope>test</scope>
    </dependency>
    

    2.POM文件

    <?xml version="1.0" encoding="UTF-8"?>
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>org.example</groupId>
      <artifactId>UiTest003</artifactId>
      <version>1.0-SNAPSHOT</version>
    
      <name>UiTest003</name>
      <!-- FIXME change it to the project's website -->
      <url>http://www.example.com</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <aspectj.version>1.8.5</aspectj.version>
        <maven.compiler.target>1.7</maven.compiler.target>
      </properties>
      <dependencies>
        <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-java</artifactId>
          <version>3.14.0</version>
        </dependency>
        <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-api</artifactId>
          <version>3.14.0</version>
        </dependency>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.testng</groupId>
          <artifactId>testng</artifactId>
          <version>6.9.10</version>
        </dependency>
        <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-chrome-driver</artifactId>
          <version>3.14.0</version>
        </dependency>
        <dependency>
          <groupId>org.assertj</groupId>
          <artifactId>assertj-db</artifactId>
          <version>1.1.1</version>
        </dependency>
        <dependency>
          <groupId>com.relevantcodes</groupId>
          <artifactId>extentreports</artifactId>
          <version>2.41.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.vimalselvam/testng-extentsreport -->
        <dependency>
          <groupId>com.vimalselvam</groupId>
          <artifactId>testng-extentsreport</artifactId>
          <version>1.3.1</version>
        </dependency>
        <dependency>
          <groupId>com.aventstack</groupId>
          <artifactId>extentreports</artifactId>
          <version>3.1.3</version>
        </dependency>
        <!-- 依赖reportNg 关联testNg-->
        <dependency>
          <groupId>org.uncommons</groupId>
          <artifactId>reportng</artifactId>
          <version>1.1.4</version>
          <exclusions>
            <exclusion>
              <groupId>org.testng</groupId>
              <artifactId>testng</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
    
        <dependency>
          <groupId>ru.yandex.qatools.allure</groupId>
          <artifactId>allure-testng-adaptor</artifactId>
          <version>1.3.6</version>
          <exclusions>
            <exclusion>
              <groupId>org.testng</groupId>
              <artifactId>testng</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
    
        <!-- 依赖Guice -->
        <dependency>
          <groupId>com.google.inject</groupId>
          <artifactId>guice</artifactId>
          <version>4.0</version>
        </dependency>
    
        <dependency>
          <groupId>io.qameta.allure</groupId>
          <artifactId>allure-testng</artifactId>
          <version>2.6.0</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.aspectj</groupId>
          <artifactId>aspectjweaver</artifactId>
          <version>${aspectj.version}</version>
        </dependency>
      </dependencies>
      <build>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
          <plugins>
            <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
            <plugin>
              <artifactId>maven-clean-plugin</artifactId>
              <version>3.1.0</version>
            </plugin>
            <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
            <plugin>
              <artifactId>maven-resources-plugin</artifactId>
              <version>3.0.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.0</version>
            </plugin>
            <plugin>
              <artifactId>maven-surefire-plugin</artifactId>
              <version>2.22.1</version>
            </plugin>
            <plugin>
              <artifactId>maven-jar-plugin</artifactId>
              <version>3.0.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-install-plugin</artifactId>
              <version>2.5.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-deploy-plugin</artifactId>
              <version>2.8.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-site-plugin</artifactId>
              <version>3.7.1</version>
            </plugin>
            <plugin>
              <artifactId>maven-project-info-reports-plugin</artifactId>
              <version>3.0.0</version>
            </plugin>
            <plugin>
              <!-- maven-surefire-plugin 配合testng/junit执行测试用例的maven插件 -->
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-surefire-plugin</artifactId>
              <version>2.22.1</version>
              <configuration>
                <!-- 测试失败后,是否忽略并继续测试 -->
                <testFailureIgnore>true</testFailureIgnore>
                <suiteXmlFiles>
                  <!-- testng配置文件名称  -->
                  <suiteXmlFile>testng.xml</suiteXmlFile>
                </suiteXmlFiles>
                <!--设置参数命令行 -->
                <argLine>
                  <!-- UTF-8编码 -->
                  -Dfile.encoding=UTF-8
                  <!-- 配置拦截器 -->
                  -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                </argLine>
                <systemProperties>
                  <property>
                    <!-- 配置 allure 结果存储路径  -->
                    <name>allure.results.directory</name>
                    <value>./target/allure-results</value>
                  </property>
                </systemProperties>
              </configuration>
              <dependencies>
                <!-- aspectjweaver maven坐标 -->
                <dependency>
                  <groupId>org.aspectj</groupId>
                  <artifactId>aspectjweaver</artifactId>
                  <version>${aspectj.version}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </project>
    
    

    3.一些方法的封装

    /**
         * 封装By by
         * 定位信息,比如id=kw
         * @param var 格式xpath=//*[@id="kw"]
         * @return  org.openqa.selenium.By
         */
    public static By Byby (String var) {
            List list = Arrays.asList(var.split("=", 2));
            if (list.size() < 2 || "".equals(list.get(1))) {
                return null;
            }
            String loc = String.valueOf(list.get(1));
            switch (String.valueOf(list.get(0).toString().toUpperCase())) {
                case "ID":
                    return By.id(loc);
                case "NAME":
                    return By.name(loc);
                case "XPATH":
                    return By.xpath(loc);
                case "CSS":
                    return By.cssSelector(loc);
                case "TAG":
                    return By.tagName(loc);
                case "CLASS":
                    return By.className(loc);
                case "LINKTEXT":
                    return By.linkText(loc);
                case "PARTIALLINKTEXT":
                    return By.partialLinkText(loc);
                default:
                    return null;
            }
        }
        /**
         * 封装Element
         * */
        public WebElement element(By by){
            WebElement ele = driver.findElement(by);
            return ele;
        }
        @Test
        public void SelectChar(){
            this.element(this.Byby("xpath=//*[@id=\"app\"]/div[1]/div[2]/div/div/div[1]/form/div[3]/div/button[2]/span")).click();
            Assert.assertTrue(driver.getPageSource().contains("订单"));
        }
    /**
         * 封装driver
         * */
    public WebDriver driverName(String browser){
            if(browser.equalsIgnoreCase("fireFox")){
                System.setProperty("webdriver.firefox.marionette","D:\\java\\geckodriver\\geckodriver-v0.14.0-win64\\geckodriver.exe");
                return new FirefoxDriver();
            }else{
                System.setProperty("webdriver.chrome.driver", "src/test/Driver/chromedriver.exe");
                return new ChromeDriver();
            }
        }
    
    展开全文
  • 测试过程触发此异常会将Testng测试结果标记为跳过. 示例 public void clickListByRandomIndex(String clickedElementName, String elementList) { callList(clickedElementName); try { int in_num = ...
  • 仅仅用于初学者交流,意在与自动化测试初学者进行相互学习交流,简单的实现了java+selenium+testng参数化打开百度搜索
  • java+selenium+testng+maven测试框架

    千次阅读 2019-04-20 10:54:14
    这是个自动化测试框架的简单介绍以及搭建步骤,在这里我们使用的语言是java,到的工具有seleniumtestng,maven,IDE的话idea和myeclipse都可以,这里使用的是idea2018。 下面简单介绍下各个工具和它们的使用以及...
  • TestNg 魅力2 Maven 执行命令 要运行测试并生成魅力报告: mvn clean site -P [singleThreaded,nogrid,grid,parallelSuite] singleThreaded-按顺序执行测试,省略并行执行 nogrid-在本地执行测试 grid-在...
  • 经历了漫长的各种资料,终于把selenium+testng参数化的问题搞定了!可能网上能找到一些,但是这些都是自己的经历。本文主要介绍了关于docker利用selenium+testng实现web自动化的相关内容,下面话不多说了,来一起看...
  • 平时页面常见的弹框一般为以下三种 弹框处理 1、Alert的处理 代码例子 public void alterTest1() throws InterruptedException { WebElement alert = driver.findElement(By.className("alert"));...
  • 1.TestNG中一个类中有多个测试方法,多个测试方法的执行顺序 or 依赖关系的问题。 2.不用dependsOnMethods,testNG会自动根据@Test方法名称的首字母排序来执行测试方法。 public class TestDepend { WebDriver ...
  • 需要安装的工具idea jdk1.8 (mysql,navicat) chromedriver_win32 ...如果看test包,就是用Java+spring boot+selenium+testng+reportng搭的一个测试架构 http://localhost:63342/demo/test-output/html/index.html
  • 一个脚本在不同浏览器跑(通过TestNG做数据驱动) public class GridHub { //创建一个注解,参数值随便设置 @DataProvider ( name = "browser1" ) //返回类型一定是Object public Object [ ...
  • 本篇博文将介绍如何借助ZTestReport和HTML模版,生成HTML测试报告的ZTestReport源码Clone地址为 https://github.com/zhangfei19841004/ztest,其中ZTestReport.java 和其template是我们需要的关...
  • 前面文章我们运行测试用例都是在main方法下,有没有什么方法不需要用main方法去执行用,这就需要单元测试框架的支持,这篇简单介绍TestNG单元测试框架。 1.什么是TestNG ...2)TestNG和Junit在JAVA上使用,Nun
  • 1、支持多并行测试 2、支持所有的云解决方案,如 BrowserStack,SauceLabs,Testingbot 3、数据驱动测试 4、一步级报告生成 5、自动屏幕快照的失败的测试步骤 6、集成的命令行支持 7、ExpectedConditionsExtended ...
  • 一、JAVA环境配置 jdk:下载地址–链接:https://pan.baidu.com/s/1fnqfFnoONIyimWAYB4sY1A 提取码:ddvr 1、下载后,打开jdk的目录,如图所示: 2、配置Java环境,右击我的电脑–属性–高级设置–环境变量,在环境...
  • Java+Eclipse+Selenium+TestNG环境搭建前言Java功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右...
  • TestNG是一个比Junit功能更强大的...主要是selenium+testNG+ReporterNG的依赖 <dependencies> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId>
  • Git和Github的简单使用 ➢1.到https://eithub.com注册账号 ➢2.github上新建project ➢3....➢4....5. git全局设置: $ git config - global user.name ‘name’ $ git config --global user.email ‘email’ ➢...
  • 解决Selenium testNG执行测试时,每个测试方法都打开一个浏览器窗口的问题定义父类,父类里定义public static 属性的driver测试的类继承父类 不需要再初始化driver 定义父类,父类里定义public static 属性的driver ...
  • 配置之前我们需要先找到TestNG的配置文件TestNG.xml,在创建完项目并引入TestNG后,并不会自动生成TestNG.xml,需要我们手动创建,创建方法就是这样啦: ①在项目上右键,选择TestNG-Convert to testNG。 ②进...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,219
精华内容 2,487
关键字:

javaseleniumtestng

java 订阅