2022 Java+Maven+Katalon Recorder+Selenium 自动化测试开发:入门教程
一、引言
最近被分配了自动化测试的任务,在此记录一下从零开始的Java+Maven+Katalon Recorder+Selenium 自动化测试。
整个流程大概为:Katalon Recorder记录操作流程并导出测试Selenium代码;在Maven项目中,添加或修改Katalon Recorder无法实现的操作。
文章会分享一些本人在测试过程中遇到的问题及解决办法
使用Python跟Java的测试流程一致,这里不再赘述Python配置和所需要的第三方库
二、目录
文章目录
三、环境、工具及项目配置
开发环境 (配置过程略)
- Java 1.8
- Maven 3.6.1
附setting.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>D:\\MavenRepo</localRepository>
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<servers>
</servers>
<mirror>
<id>nexus-aliyun</id>
<name>nexus-aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</profiles>
</settings>
开发工具 (安装步骤略)
项目配置
- 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>
<packaging>jar</packaging>
<groupId>com.zlc</groupId>
<artifactId>WebTest</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>WebTest</name>
<description>Web Test for Maven</description>
<properties>
<java.version>8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>compile</scope>
</dependency>
<!-- 加载selenium包 -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.1.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
四、Katalon Recorder教程
-
图中位置①单击“+”创建Test Suite
-
图中位置②单击“+”创建Test Case
-
单击Record按钮,开始录制
-
在网页上手动操作,这些操作会被Katalon Recorder自动录制
基本只能自动生成点击、跳转操作,不过也够了,用它的目的就是自动编写简单操作的测试代码,复杂操作还是得手动写测试代码。 -
停止录制
-
导出Java测试代码
-
选择要导出的代码类型
Java选择“Java(WebDriver + JUnit)”;
Python选择“Python2”,可在Python3环境下使用,不兼容问题很少,问题不大。 -
选择Test Suite和Test Case
-
查看代码,可以直接复制
-
export导出(直接复制,也不需要导出)
五、Selenium开发中遇到的问题
1. 报“no window”错误
①检查元素是否在子frame中,WebDriver跳转到对应的frame中
WebDriver qrcont = driver.switchTo().frame("frameId");
②基本都是因为页面未加载完成,页面跳转后让线程等待几秒钟
Thread.sleep(5000);
或
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
③页面发生跳转,需等待几秒后,切换页柄,最好刷新一下页面,再等待几秒页面加载
Thread.sleep(1000);
String winHandleBefore = driver.getWindowHandle();
for(String winHandle : driver.getWindowHandles()) {
if (winHandle.equals(winHandleBefore)) {
continue;
}
driver = driver.switchTo().window(winHandle);
System.out.println(driver.getCurrentUrl());
break;
}
driver.navigate().refresh();
Thread.sleep(1000);
2. 报“no such element”错误
①检查xpath是否正确,Katalon Recorder生成的xpath不一定正确:在浏览器的开发者工具中检查一下
②可能是元素未加载,设置等待几秒钟
③元素未显示(例如元素在滑动窗口中未显示出来,使用JS脚本找到容器并滑动到对应位置,10000是个较大值)
js.executeScript("document.getElementsByClassName('filter-content')[0].scrollTop=10000;");
六、结语
测试开发中经常会遇见:浏览器开发工具中能找到元素,但是运行过程中获取不到的问题;需一步一步debug,仔细分析可能存在的原因。
如有纰漏与遗漏,欢迎大家指正。