0
点赞
收藏
分享

微信扫一扫

2022 Java+Maven+Katalon Recorder+Selenium 自动化测试

2022 Java+Maven+Katalon Recorder+Selenium 自动化测试

一、引言

最近被分配了自动化测试的任务,在此记录一下从零开始的Java+Maven+Katalon Recorder+Selenium 自动化测试。

整个流程大概为:Katalon Recorder记录操作流程并导出测试Selenium代码;在Maven项目中,添加或修改Katalon Recorder无法实现的操作。

文章会分享一些本人在测试过程中遇到的问题及解决办法
使用Python跟Java的测试流程一致,这里不再赘述Python配置和所需要的第三方库

二、目录

文章目录

  1. 引言
  2. 目录
  3. 环境、工具及项目配置
  4. Katalon Recorder教程
  5. Selenium开发中遇到的问题

三、环境、工具及项目配置

开发环境 (配置过程略)
  1. Java 1.8
  2. 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>
开发工具 (安装步骤略)
  1. IDEA 2020.1.3
  2. Katalon Recorder 5.7.3
  3. Edge 98.0.1108.56:驱动地址
  4. Chrome 98.0.4758.102:驱动地址1驱动地址2
项目配置
  1. 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教程

  1. 图中位置①单击“+”创建Test Suite

  2. 图中位置②单击“+”创建Test Case

  3. 单击Record按钮,开始录制
    在这里插入图片描述

  4. 在网页上手动操作,这些操作会被Katalon Recorder自动录制
    基本只能自动生成点击、跳转操作,不过也够了,用它的目的就是自动编写简单操作的测试代码,复杂操作还是得手动写测试代码。

  5. 停止录制

  6. 导出Java测试代码
    在这里插入图片描述

  7. 选择要导出的代码类型
    Java选择“Java(WebDriver + JUnit)”;
    Python选择“Python2”,可在Python3环境下使用,不兼容问题很少,问题不大。

  8. 选择Test Suite和Test Case

  9. 查看代码,可以直接复制
    在这里插入图片描述

  10. 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,仔细分析可能存在的原因。
如有纰漏与遗漏,欢迎大家指正。

举报

相关推荐

0 条评论