移动端自动化测试工具 Appium 之 main 启动

news2024/11/28 2:29:51

文章目录

  • 一、背景
  • 二、生成xml文件
    • 2.1、创建xml方法
    • 2.2、执行主类MainTest
    • 2.3、自动生成的xml
    • 2.4、工程目录
    • 2.5、执行结果
  • 三、命令行执行appium服务
  • 四、主方法启动类
  • 五、集成Jenkins
  • 六、总结

一、背景

Jenkins 做集成测试是不错的工具,那么UI自动化是否可以,appium与testng结合能否集成到jenkins中去做定时运行。如果要执行,先解决jenkins怎么识别testng:

  • 通过pom文件执行
  • 通过调用main方式testng

今天只演示通过main方式执行testng

二、生成xml文件

2.1、创建xml方法

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
/**

 * @author liwen

 * @Title: createTestngXml

 * @Description: 生存xml文件

 * @date 2019/11/24 / 16:15

 */
public class createTestngXml
{
    static Properties sysProperty = System.getProperties();
    public static void createTestngXml(String classname)
    {
        Document document = DocumentHelper.createDocument();
        Element root = DocumentHelper.createElement("suite");
        document.setRootElement(root);
        root.addAttribute("name", "automation");
        root.addAttribute("thread-count", String.valueOf("1"));
      
        //生成监听器
        Element listeners = root.addElement("listeners");
        Element listener1 = listeners.addElement("listener");
        listener1.addAttribute("class-name", "appout.reporter.ReporterListener");
        Element test = root.addElement("test");
      
        //增加设备号与端口号:
        Element paramUuid = test.addElement("parameter");
        paramUuid.addAttribute("name", "udid");
      
        //根据实际情况修改
        paramUuid.addAttribute("value", "127.0.0.1:62001");
        Element paramPort = test.addElement("parameter");
        paramPort.addAttribute("name", "port");
      
        //根据实际情况修改
        paramPort.addAttribute("value", "4723");
        test.addAttribute("name", "127.0.0.1");
        Element classes = test.addElement("classes");
        Element classNode = classes.addElement("class");
        classNode.addAttribute("name", classname);
        OutputFormat format = new OutputFormat("    ", true);
      
        XMLWriter xmlWrite2;
        try
        {
            xmlWrite2 = new XMLWriter(new FileOutputStream(sysProperty.getProperty("user.dir") + "/comsevenday/src/main/resources/mytestng.xml"), format);
            xmlWrite2.write(document);
        }
        catch(UnsupportedEncodingException e)
        {
            e.printStackTrace();
        }
        catch(FileNotFoundException e)
        {
            e.printStackTrace();
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
    }
}

2.2、执行主类MainTest

import appout.utils.createTestngXml;
import org.testng.TestNG;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

/**

 * @author liwen

 * @Title: MainTest

 * @Description: 主方法

 * @date 2019/11/24 / 19:49

 */

public class MainTest
{
    static Properties sysProperty = System.getProperties();
    private static
    final String ESCAPE_PROPERTY = "org.uncommons.reportng.escape-output";
    public static void main(String[] args)
    {
        try
        {
            //执行的类
            createTestngXml.createTestngXml("appout.appcase.CartTest");
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
      
        System.setProperty(ESCAPE_PROPERTY, "false");
        List < String > suites = new ArrayList < String > ();
        System.out.println(suites);
        suites.add(sysProperty.getProperty("user.dir") + "/comsevenday/src/main/resources/appxml/mytestng.xml");
        TestNG tng = new TestNG();
        tng.setTestSuites(suites);
        tng.run();
    }
}

2.3、自动生成的xml

<?xml version="1.0" encoding="UTF-8"?>
<suite name="automation" parallel="Automatically generate xml" thread-count="1">
	<listeners>    
		<listener class-name="appout.reporter.ReporterListener"/>
	</listeners> 
	<test name="127.0.0.1">     
		<parameter name="udid" value="127.0.0.1:62001"/>      
		<parameter name="port" value="4723"/>      
		<classes>           
			<class name="appout.appcase.CartTest"/>
		</classes>
	</test>
</suite>

2.4、工程目录

在这里插入图片描述

2.5、执行结果

在这里插入图片描述

三、命令行执行appium服务

如果使用命令行执行,需要了解下appium启动命令,这样咱们才可以拼接命令,启动服务。

先试下编写好的命令:

appium -p 4327 -bp  11 -U 127.0.0.1:62001

在这里插入图片描述
编写执行启动服务器:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

判断是否存在,如果存在就kill
在这里插入图片描述

四、主方法启动类

在这里插入图片描述

五、集成Jenkins

这个就不介绍,网上很多介绍的。

六、总结

通过上面主方法调用检查appium服务,并且执行appium服务,上面不足的地方就是生成xml中设备号与udid需要手动,其实也是可以通过自动生成并且赋值给appium执行命令与生存testng.xml中去。暂时就不演示怎么加上去,其实在工作中确实是自动获取设备号生存xml,全部一键执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1659365.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

两种方法合并3dtiles(分别使用js/java)

目录 前言&#xff1a; 需合并的json目录 aa/tileset.json bb/tileset.json cc/tileset.json dd/tileset.json ee/tileset.json js源码&#xff1a; 运行命令&#xff1a; 生成结果&#xff1a; java源码&#xff1a; Matrix.java ThreeDTilesJoin2.java pom文件…

Rust 适合哪些场景?

目录 二、Rust 适合哪些场景&#xff1f; 三、Rust 社区的发展趋势如何&#xff1f; 四、Rust 快速搭建一个WebServer服务器 一、Rust是什么&#xff1f; Rust是一门赋予每个人构建可靠且高效软件能力的语言。 Rust 程序设计语言 一门帮助每个人构建可靠且高效软件的语言。…

2024年美国市场亚太游戏品牌数字广告洞察报告

来源&#xff1a;Sensor Tower 美国是全球最大的游戏市场之一&#xff0c;也是亚太游戏品牌出海的重要市场。2023年Q2至2024年Q1&#xff0c;美国市​场广告投放额排名前10的亚太游戏品牌&#xff0c;合计支出 超过7.5亿美元&#xff0c;环比上涨23%。 排名第一的米哈游(miHoY…

【将Maven源改为国内阿里云镜像源】

目录 一、如何配置Maven镜像源&#xff1f; 二、Idea中的Maven配置 ​三、项目与你本地仓库和中央仓库的联系 一、如何配置Maven镜像源&#xff1f; 1、打开你的Maven用户设置文件(settings.xml)。默认情况下&#xff0c;该文件存在于你的用户目录下的.m2文件夹中。如果你没…

内网安全-隧道技术SSHDNSICMPSMB上线通讯LinuxMac 简单总结

第126天&#xff1a;内网安全-隧道技术&SSH&DNS&ICMP&SMB&上线通讯Linux&Mac_内网安全-隧道技术_ssh_dns_icmp_smb_上线通讯linux_mac-CSDN博客 内网渗透—隧道技术_隧道技术csdn-CSDN博客 #SMB 隧道&通讯&上线 判断&#xff1a;445 通讯 上…

光伏设备制造5G智能工厂数字孪生可视化平台,推进行业数字化转型

光伏设备制造5G智能工厂数字孪生可视化平台&#xff0c;推进行业数字化转型。光伏设备制造5G智能工厂数字孪生可视化平台是光伏行业数字化转型的重要一环。通过数字孪生平台&#xff0c;光伏设备制造企业可以实现对生产过程的全面监控和智能管理&#xff0c;提高生产效率&#…

人工智能|推荐系统——工业界的推荐系统之涨指标

一、推荐系统的评价指标 涨指标的方法有哪些&#xff1f; 二、涨指标的方法&#xff1a;召回 2.1 改进双塔模型 2.2 Item-to-Item (I2I) 2.3 类似I2I 的模型 2.4 总结&#xff1a;改进召回模型 三、涨指标的方法&#xff1a;排序模型 3.1 精排模型的改进 3.2 粗排模型的改进 3…

宝塔面板如何删除一个站点

我们一般的网站都是PHPMySQL开发的&#xff0c;所以删除站点&#xff0c;就要先删数据库&#xff0c;再删网站目录 注意&#xff1a;一点要确保无用的再删 删除站点目录

第十二届蓝桥杯省赛真题 Java 研究生 组【原卷】

文章目录 发现宝藏【考生须知】试题 A: 卡片试题 B: 相乘试题 C: 直线试题 D: 路径试题 E : \mathrm{E}: E: 回路计数试题 F: 时间显示试题 G: 最少砝码试题 H : \mathrm{H}: H: 杨辉三角形试题 I: 双向排序试题 J:分果果 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&…

远动通讯屏,组成和功能介绍

远动通讯屏&#xff0c;组成和功能介绍 远动通讯屏是基于电网安全建设而投入的远方监控厂站信息、远方切除电网负荷的设备&#xff1b;主经是由远动装置、通讯管理机、交换机、GPS对时装置、数字通道防雷器、模拟通道防雷器、屏柜及附件等设备组成。变电站远动通讯系统是指对广…

Middle for Mac:简洁高效的文本编辑软件

追求简洁与高效&#xff1f;Middle for Mac将是您文本编辑的最佳选择。这款Mac平台上的文本编辑器&#xff0c;以其独特的魅力和实用的功能&#xff0c;赢得了众多用户的喜爱。 Middle注重用户体验&#xff0c;采用简洁直观的界面设计&#xff0c;让您能够迅速上手并享受高效的…

如何减少冗长变量声明的代码行数

减少冗长变量声明的代码行数有几种方法&#xff0c;具体取决于编程语言和上下文。以下是一些常见的技巧&#xff1a; 问题背景 在编写代码时&#xff0c;经常需要定义许多变量和参数。如果这些变量和参数过多&#xff0c;会导致代码行数增加&#xff0c;可读性降低。例如&…

Metes and Bounds Pro for Mac 激活版:精准数据转换与绘图利器

Metes and Bounds Pro for Mac是一款专为土地测量和边界划定而设计的专业软件&#xff0c;为Mac用户提供了高效、精确的测量工具。其核心功能在于其全面的测量工具和简便的操作流程&#xff0c;能够满足在土地管理、房地产开发、农业规划等领域的多样化需求。 这款软件集合了距…

Java转Kotlin

Kotlin 是一种静态编程语言 2011JetBrains开始开发Kotlin&#xff0c;用于多平台应用&#xff08;能脱离虚拟机&#xff0c;直接编译成可以在win,mac,linux运行的二进制代码&#xff09; 2017获得谷歌官方支持 语法简洁&#xff08;减少了大量的样板代码&#xff0c;语法糖&…

RS3236-3.3YF5 封装SOT-23-5 线性稳压器 带过温保护

RS3236-3.3YF5 是一款由Runic&#xff08;润石&#xff09;公司生产的线性稳压器&#xff08;LDO&#xff09;&#xff0c;以下是该器件的一些功能和参数介绍&#xff1a; 品牌: Runic 产品类型: 线性稳压器 (LDO) 输入电压范围: 最大 7.5V 输出电压: 固定 3.3V 输出电流: 最大…

系分-历年论文题目

年份试题一试题二试题三试题四2023年信息系统数据转换与迁移敏捷开发方法论Devops及其应用论信息系统可行性分析2022年论原型法及其在信息系统开发中的应用论面向对象设计方法及其应用2021年论面向对象的信息系统分析方法论静态测试方法及其应用论富互联网应用的客户端开发技术…

机器学习-12-sklearn案例03-flask对外提供服务

整体思路 训练一个模型&#xff0c;把模型保存 写一个基于flask的web服务&#xff0c;在web运行时加载模型&#xff0c;并在对应的接口调用模型进行预测并返回 使用curl进行测试&#xff0c;测试通过 再创建一个html页面&#xff0c;接受参数输入&#xff0c;并返回。 目录结…

Go 单元测试完全指南(一)- 基本测试流程

为什么写单元测试&#xff1f; 关于测试&#xff0c;有一张很经典的图&#xff0c;如下&#xff1a; 说明&#xff1a; 测试类型成本速度频率E2E 测试高慢低集成测试中中中单元测试低快高 也就是说&#xff0c;单元测试是最快、最便宜的测试方式。这不难理解&#xff0c;单元…

人形机器人大热,优必选、傅利叶智能的春天还有多远?

配图来自Canva可画 进入2024年以来&#xff0c;机器人领域仍然十分热闹。前脚&#xff0c;斯坦福大学华人团队开源的既会做家务、又会煎蛋煮饭的MobileALOHA机器人&#xff0c;在全网刷屏&#xff0c;让不少人直呼“机器人养老有望”&#xff1b;后脚&#xff0c;马斯克就发了…

ERP系统:驱动企业高效、准确发展的核心引擎

企业资源规划&#xff08;ERP&#xff09;系统作为大型组织内部不同计算机系统的桥梁&#xff0c;发挥着至关重要的作用。在没有ERP系统的情况下&#xff0c;各部门可能各自拥有一套为其特定任务定制的系统&#xff0c;但这些系统之间是相互孤立的。而引入ERP软件后&#xff0c…