java+testng+selenium的自动化测试实例

 更新时间:2022年11月15日 14:25:48   作者:潇洒却风流  
这篇文章主要介绍了java+testng+selenium的自动化测试实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

前言

这是用testng框架加selenium做的一个UI自动化测试的项目

Java代码

package com.justin;

/**
 * @author justin-zhu
 * <p>
 * 2022年02月23日 16:48
 */

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.*;
import java.util.concurrent.TimeUnit;

public class HelloTestNG {

    private WebDriver driver;
    @BeforeMethod
    public void setBefore(){
        
        System.setProperty("webdriver.chrome.driver","C:\\Users\\betalpha-qa\\code\\testcode\\TestNG-Demo\\src\\main\\resources\\chromedriver.exe");
        //打开浏览器,使其最大化,并隐性等待两秒钟
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
    }

    @AfterMethod
    public void setAfter(){
        //结束驱动程序进程,关闭浏览器
        driver.quit();
    }

    @Test(groups = {"login"})
    public void login() throws InterruptedException {

        //输入网址(输入本地项目的URL,下面为本地项目的登陆界面)
        driver.get("http://192.168.0.188/webapp/session/login");
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
        //使用其方法获取浏览器类型,并断言(如果断言失败,不会执行下面代码)
        String browserType = driver.getTitle();
        Assert.assertEquals("Google", browserType);
        //获取账号框定位
        WebElement userName = driver.findElement(By.xpath("//*[@id=\"app\"]/div/div/form/div/div[2]/div/div[1]/div/input"));
        //获取密码框定位
        WebElement password = driver.findElement(By.xpath("//*[@id=\"app\"]/div/div/form/div/div[3]/div/div[1]/div/div/span/input"));
        //获取验证码框定位
        WebElement authCode = driver.findElement(By.xpath("//*[@id=\"app\"]/div/div/form/div/div[4]/div/div/div[1]/div/input"));
        WebElement loginButton = driver.findElement(By.xpath("//*[@id=\"app\"]/div/div/form/div/div[5]/div/div/div/button"));
        //输入账号密码登录,并点击登录
        userName.sendKeys("jusitn@qq.com");
        password.sendKeys("123456");
        authCode.sendKeys("1234");
        driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
        loginButton.click();
        driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
        //获取登录界面的title,验证登录成功
        WebElement title = driver.findElement(By.xpath("//*[@id=\"logo\"]/div/div/div[1]/h1"));
        String actual = title.getText();
        Assert.assertEquals(actual, "指数研发与管理平台");
    }

   @Test(description = "定位百度一下")
    public void testBaiDu(){
        //输入网址
        driver.get("https://www.baidu.com/");
        driver.manage().timeouts().implicitlyWait(2,TimeUnit.SECONDS);
        //定位到百度一下按钮
        WebElement name = driver.findElement(By.id("su"));
        String text = name.getAttribute("value");
        Assert.assertEquals(text, "百度一下");
    }
    
    @Test(groups = {"fast"})
    public void aFastTest(){
        System.out.println("Fast test");
    }

    @Test(groups = {"slow"})
    public void aSlowTest(){
        System.out.println("Slow test");
    }
}

配置文件

要想上面的test能跑起来,还需要再pon.xml文件里面添加以下依赖

<!-- https://mvnrepository.com/artifact/org.testng/testng -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.3</version>
            <scope>test</scope>
        </dependency>

这是testng框架的依赖,有了这个依赖testng的注释才会生效

<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-server -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-server</artifactId>
            <version>3.14.0</version>
        </dependency>

如果你只在本地运行代码,那么有selenium-java就够了;但是如果要在远程调用,就需要配置该selenium-server依赖

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-chrome-driver</artifactId>
            <version>2.42.2</version>
        </dependency>

这是想要再界面上操作元素配置的依赖

扩展

testng用例可以直接运行java代码,也可以配置testng.xml文件进行用例的执行

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name = "testProj">
    <test name = "testDemo1">

<!--        .XML中指定组内的某些方法,include为执行,exclude为不执行-->
        <groups>
            <run>
                <exclude name="fast"/>
                <exclude name="slow"/>
                <include name="login"/>
            </run>
        </groups>

<!--        .XML指明测试类,按照类名执行-->
        <classes>
            <class name="com.justin.HelloTestNG"/>
        </classes>

<!--        .XML指定包名,执行包内的所有测试类-->
<!--        <packages>-->
<!--            <package name="com.justin"></package>-->
<!--        </packages>-->
    </test>
    
    <listeners>
        <listener class-name="org.uncommons.reportng.HTMLReporter"></listener>
        <listener class-name="org.uncommons.reportng.JUnitXMLReporter"></listener>
    </listeners>
</suite>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 将springboot项目生成可依赖的jar并引入到项目中的方法

    将springboot项目生成可依赖的jar并引入到项目中的方法

    SpringBoot项目默认打包的是可运行jar包,也可以打包成不可运行的jar包,本文给大家介绍将springboot项目生成可依赖的jar并引入到项目中的方法,感兴趣的朋友一起看看吧
    2023-11-11
  • Java如何获取resources下的文件路径和创建临时文件

    Java如何获取resources下的文件路径和创建临时文件

    这篇文章主要介绍了Java如何获取resources下的文件路径和创建临时文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Java自定义标签用法实例分析

    Java自定义标签用法实例分析

    这篇文章主要介绍了Java自定义标签用法,结合实例形式分析了java自定义标签的定义、使用方法与相关注意事项,需要的朋友可以参考下
    2017-11-11
  • Java全面详细讲解逻辑控制的使用

    Java全面详细讲解逻辑控制的使用

    在程序开发的过程之中一共会存在三种程序逻辑:顺序结构、分支结构、循环结构,对于之前所编写的代码大部分都是顺序结构的定义,即:所有的程序将按照定义的代码顺序依次执行,让我们来深入探讨一下
    2022-04-04
  • Java实现基于JDBC操作mysql数据库的方法

    Java实现基于JDBC操作mysql数据库的方法

    这篇文章主要介绍了Java实现基于JDBC操作mysql数据库的方法,结合实例形式分析了java使用JDBC实现针对mysql数据库的连接、查询、输出等相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • JSON.toJSONString使用异常分析

    JSON.toJSONString使用异常分析

    这篇文章主要为大家介绍了JSON.toJSONString使用异常分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • SpringBoot中使用Thymeleaf模板详情

    SpringBoot中使用Thymeleaf模板详情

    这篇文章主要介绍了SpringBoot中使用Thymeleaf模板详情,hymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎,能够处理HTML,XML,JavaScript,CSS甚至纯文本,下文更多相关资料介绍需要的小伙伴可以参考一下
    2022-04-04
  • springboot集成测试里的redis

    springboot集成测试里的redis

    这篇文章主要介绍了springboot集成测试里的redis,本文给大家分享了源码,添加依赖添加mock的方法,需要的朋友可以参考下
    2018-11-11
  • SpringBoot整合Vue实现微信扫码支付以及微信退款功能详解

    SpringBoot整合Vue实现微信扫码支付以及微信退款功能详解

    最近公司要在微信公众号上做一个活动预报名,活动的门票等需要在微信中支付,下面这篇文章主要给大家介绍了关于SpringBoot整合Vue实现微信扫码支付以及微信退款功能的相关资料,需要的朋友可以参考下
    2022-05-05
  • Java判断变量是否为空问题的方法总结

    Java判断变量是否为空问题的方法总结

    项目中经常遇到对象判空,下面这篇文章主要给大家介绍了关于Java判断变量是否为空问题的方法,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-04-04

最新评论