【UI自动化-1】UI自动化环境搭建与简单示例

时间:2022-07-25
本文章向大家介绍【UI自动化-1】UI自动化环境搭建与简单示例,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1 准备工作

UI自动化的工具选型如下:

  1. 编程语言:Java
  2. 编程IDE:IDEA
  3. 项目管理构建:maven
  4. UI自动化测试:selenium3.0
  5. 版本管理:git
  6. 持续集成:Jenkins,详情见:
  7. 浏览器:chrome
  8. webdriver:地址备用地址,下载后解压到特定文件夹

2 项目构建

新建一个maven项目:

这里有一个坑:注意上图中红框信息,这里要选择自己安装的jdk,不然后续项目中会有莫名其妙的报错。

添加pom依赖,pom.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>org.example</groupId>
    <artifactId>test-automation-ui</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <java.version>1.8</java.version>
        <selenium.version>3.4.0</selenium.version>
        <testng.version>6.14.3</testng.version>
    </properties>

    <dependencies>
        <!-- selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>${selenium.version}</version>
        </dependency>
      
        <!-- https://mvnrepository.com/artifact/org.testng/testng -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>${testng.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

可以在这个 地址 中查找相应的依赖地址:

编写示例

下面编写一个简单的示例。

首先,创建一个Driver类,这个类主要是封装了webDriver,目前只提供了chrome的driver,后续可以添加Firefox等,在使用时直接从该类中调用相应方法即可。

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * @author muguozheng
 * @date 2020/4/5 11:27
 * @Description: driver配置
 * @modify
 */
public class Driver {
    WebDriver driver;

    public WebDriver chromeDriver() {
        String driverPath =  "E:/source/driver/chromedriver_80_2.exe";
        System.setProperty("webdriver.chrome.driver",driverPath);

        ChromeOptions options = new ChromeOptions();
        options.addArguments("--start-maximized"); // 启动时自动最大化窗口
        options.addArguments("--disable-popup-blocking"); // 禁用阻止弹出窗口
        options.addArguments("no-sandbox"); // 启动无沙盒模式运行
        options.addArguments("disable-extensions"); // 禁用扩展
        options.addArguments("no-default-browser-check"); // 默认浏览器检查
        Map<String, Object> prefs = new HashMap();
        prefs.put("credentials_enable_service", false);
        prefs.put("profile.password_manager_enabled", false);
        options.setExperimentalOption("prefs", prefs);// 禁用保存密码提示框

        driver = new ChromeDriver(options);
        //设置寻找一个元素的时间
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        return driver;
    }
}

接着,创建一个测试类:

import com.common.Driver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

/**
 * @author muguozheng
 * @date 2020/4/5 12:47
 * @Description: demo
 * @modify
 */
public class SeleniumTest {
   
        WebDriver driver;

        @BeforeTest
        public void init() {
            String url = "http://www.baidu.com";

            // 新建一个浏览器句柄
            driver = new Driver().chromeDriver();
            //打开URL
            driver.get(url);
        }

        @Test
        @Parameters("keyWords")
        public void search(String keyWords) throws InterruptedException {
            //输入搜索字符串
            driver.findElement(By.xpath("//*[@id="kw"]")).sendKeys(keyWords);
            //点击[百度一下]按钮
            driver.findElement(By.xpath("//*[@id="su"]")).click();
            Thread.sleep(2000);
        }

        @AfterTest
        public void teardown() {
            driver.quit();
        }
}

第三步,新建一个test.xml文件,并写入测试配置

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

<suite name="Test Of TestNG">
    <test verbose="2" name="百度搜索">
        <parameter name="keyWords" value="测试" />
        <parameter name="keyWords" value="测试" />
        <classes>
            <class name="SeleniumTest">
                <methods>
                    <include name="search" />
                </methods>
            </class>
        </classes>
    </test>
</suite>

在文件上邮件单击运行该文件,即可执行。

至此,一个较为完整的测试demo完成,后续会有更详细全面的总结。