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

news/2025/2/27 1:51:06/

前言

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

Java代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

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文件里面添加以下依赖

1

2

3

4

5

6

7

<!-- 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的注释才会生效

1

2

3

4

5

6

<!-- 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依赖

1

2

3

4

5

        <dependency>

            <groupId>org.seleniumhq.selenium</groupId>

            <artifactId>selenium-chrome-driver</artifactId>

            <version>2.42.2</version>

        </dependency>

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

扩展

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

<?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>

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】


http://www.ppmy.cn/news/1256472.html

相关文章

python-GC机制、装饰器、生成器、迭代器、三元表达式、列表生成式、生成器表达式、函数递归、面向对象、

1 基础知识 1.1 GC机制 Python的垃圾回收&#xff0c;其实高级的语言都有自己的垃圾回收机制简称GC&#xff0c; python当中主要通过三种方式解决垃圾回收的方式&#xff0c;引用计数、标记清除、分代回收。引用计数&#xff1a;如果有新的引用指向对象&#xff0c;对象引用计…

Vue3自定义Hooks定义

在Vue3中&#xff0c;自定义Hooks的定义是通过创建一个函数来共享逻辑或状态&#xff0c;以便在多个组件之间重复使用。Vue3中的自定义Hooks与React中的自定义Hooks非常相似&#xff0c;但有一些细微的差别。 要定义一个自定义Hook&#xff0c;可以按照以下步骤进行操作&#x…

JavaScript变量的小驼峰命名法

什么是小驼峰命名法 JavaScript中变量的小驼峰命名法&#xff0c;一般指的是JavaScript的变量的名称或函数的名称采用大小写字母搭配的方式进行命名&#xff0c;比如&#xff1a;folowerName、studentAge&#xff0c;其中N和A是大写的。 小驼峰命名变量的用处是什么 浏览器执…

【腾讯云HAI域探密】- AIGC应用助力企业降本增效之路

一、前言&#xff1a; 近年来&#xff0c;随着深度学习、大数据、人工智能、AI等技术领域的不断发展&#xff0c;机器学习是目前最火热的人工智能分支之一&#xff0c;是使用大量数据训练计算机程序&#xff0c;以实现智能决策、语音识别、图像处理等任务。 作者也是经过了以…

第七章java(类与对象)

new 类型&#xff08;&#xff09;&#xff1a;对象 如Scanner 值&#xff1a;变量 2. 类型决定&#xff08;包括&#xff09;对象&#xff1a;&#xff08;特征属性&#xff1b;操作方法&#xff09; 如何创建类型&#xff1a;&#xff08;public 类型名 对象名&#x…

js获取当前时间,当日零点,前一周时间

项目场景&#xff1a; 根据时间进行数据的快捷筛选 解决方案&#xff1a; 1.获取当前时间和当日零点时间 //当日 $("#today").click(function () { var currentTime new Date(Date.now()); var formattedCurrentTime currentTime.toLocaleString(zh-C…

ROS第一个程序——helloworld

目录 一、工作空间的创建 1.创建工作空间并初始化 2.进入 src 创建 ros 包并添加依赖 二、C实现helloworld C源码实现 编辑 ros 包下的 Cmakelist.txt文件 进入工作空间目录并编译 执行 三、python实现helloworld 进入 ros 包添加 scripts 目录并编辑 python 文件 …

VS2022使用Vim按键

VS2022使用Vim按键 在插件管理里面搜索VsVim 点击安装&#xff0c;重启VS 工具->选项->VsVim 配置按键由谁处理&#xff0c;建议Ctrl C之类常用的使用VS处理&#xff0c;其它使用Vim处理