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

文章目录

  • 一、背景
  • 二、生成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 staticfinal 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://xiahunao.cn/news/3030675.html

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

相关文章

pikachu靶场-全套学习

文章目录 配置pikachu靶场浏览器访问过程burpsuite配置代理hackbar安装使用kali安装中国蚁剑暴力破解cookie简化场景解释各部分含义如何工作 基于表单的暴力破解验证码绕过(On server)验证码绕过(on client)token防爆破? XSS&#xff08;Cross-Site Scripting跨站脚本攻击 &am…

JavaWeb--13Mybatis(2)

Mybatis&#xff08;2&#xff09; 1 Mybatis基础操作1.1 需求和准备工作1.2 删除员工日志输入参数占位符 1.3 新增员工1.4 修改员工信息1.5 查询员工1.5.1 根据ID查询数据封装 1.5.3 条件查询 2 XML配置文件规范3 MyBatis动态SQL3.1 什么是动态SQL3.2 动态SQL-if更新员工 3.3 …

JCR一区 | Matlab实现1D-2D-GASF-CNN-GRU-MATT的多通道输入数据分类预测

JCR一区 | Matlab实现1D-2D-GASF-CNN-GRU-MATT的多通道输入数据分类预测 目录 JCR一区 | Matlab实现1D-2D-GASF-CNN-GRU-MATT的多通道输入数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 基本介绍 Matlab实现1D-2D-GASF-CNN-GRU-MATT的多通道输入数据分类预…

el-select选项框内容过长

利用popper-class实现选项框内容过长&#xff0c;截取显示功能&#xff1a; <el-select popper-class"popper-class" :popper-append-to-body"false" v-model"value" placeholder"请选择"><el-optionv-for"item in opt…

Win10 WSL2 Ubuntu 22.04 配置深度学习环境

文章目录 WSL安装Anaconda下载Anaconda安装包安装配置conda命令conda换国内源conda初始化shell环境conda init手动源激活脚本&#xff1a; 安装Windows上的NVIDIA GPU驱动WSL安装CUDA Toolkit安装12.1版本环境配置报错1报错2 内存不足导致安装崩溃问题描述问题分析问题解决 WSL…

Topaz Photo AI for Mac:专业级照片处理软件

Topaz Photo AI for Mac是一款专为Mac用户设计的专业级照片处理软件。它集成了先进的人工智能技术&#xff0c;为用户提供了强大的照片处理功能。无论是照片修复、增强还是转换&#xff0c;Topaz Photo AI都能轻松应对。 这款软件具备强大的AI技术&#xff0c;能够自动识别和修…

您的文件和驱动器上的“密码保护”有多安全?

某些行业&#xff08;例如医疗保健、法律和公司&#xff09;的人们在通过电子邮件发送文件时通常依赖密码保护&#xff0c;认为它可以提供足够的安全性来防止窥探。然而&#xff0c;对 PDF 或 Excel 文件进行简单的密码保护并不像看起来那样万无一失。 使用密码保护文件而不加…

JAVA 项目<果园之窗>_完结

目录 1、前言&#xff1a;2、视频展示&#xff1a;3、环境配置&#xff1a;4、工程代码&#xff1a;5、原理&#xff1a;6、原理补充&#xff1a;7、综上&#xff1a; 1、前言&#xff1a; 因为没有足够的时间这个项目用的是别人搭好的框架&#xff0c;在此基础上做调整并根据前…

verilog中输入序列连续的序列检测

编写一个序列检测模块&#xff0c;检测输入信号a是否满足01110001序列&#xff0c;当信号满足该序列&#xff0c;给出指示信号match。 模块的接口信号图如下&#xff1a; 代码如下&#xff1a; &#xff08;CSDN代码块不支持Verilog&#xff0c;代码复制到notepad编辑器中&am…

知识库文档系统源码部署/搭建/上线/运营/售后/更新

一款基于ThinkPHPFastAdmin开发的知识库文档系统&#xff0c;可用于企业工作流程的文档管理&#xff0c;结构化记录沉淀高价值信息&#xff0c;形成完整的知识体系&#xff0c;能够轻松提升知识的流转和传播效率&#xff0c;更好地成就组织和个人。为部门、团队或项目搭建知识库…

STM32_HAL_RTC_中断实现闹钟

1STM32设置 在STM32Cude中设置RTC//具体设置看先前发的文章 再打开闹钟中断&#xff08;如下图&#xff09; 2代码思路 2.1启动闹钟&#xff08;HAL_RTC_SetAlarm_IT(&hrtc,&sAlarm,FORMAT_BCD)&#xff09; 2.2设置回调函数&#xff08;void HAL_RTC_AlarmAEventC…

EXPLORER - Stone Age

一个程式化的包,包含史前建筑、巨石结构、角色、自然资产、工具和各种道具,可以添加到你的游戏中。 包装内容: + 570 资产。 男性和女性角色,包括数十件服装、皮肤和配饰。 - 8 - 预制角色变体 安装后即可直接使用。 - 15 - 包括动画(8个男性动画和7个女性动画),与Mecan…

node pnpm修改默认包的存储路径

pnpm与npm的区别 PNPM和NPM是两个不同的包管理工具。 NPM&#xff08;Node Package Manager&#xff09;是Node.js的官方包管理工具&#xff0c;用于安装、发布和管理Node.js模块。NPM将包安装在项目的node_modules目录中&#xff0c;每个包都有自己的依赖树。 PNPM&#xf…

定时任务执行 报错command not found 解决方案

目录 写在前面所需知识 问题复现解决方式方法1. 使用绝对路径的命令&#xff1a;方法2. 重新加载环境变量&#xff1a;成功解决截图 原理 写在前面 定时任务脚本出现command not found报错&#xff0c;解决方案。 所需知识 定时任务shell脚本环境变量 问题复现 编写了一个…

2024 年最新使用 ntwork 框架搭建企业微信机器人详细教程

NTWORK 概述 基于 PC 企业微信的 api 接口&#xff0c;支持收发文本、群、名片、图片、文件、视频、链接卡片等。 下载安装 ntwork pip install ntwork国内源安装 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ntwork企业微信版本下载 官方下载&#xff1a;h…

2024年湖北省专升本C语言程序设计大题真题解析

2024年湖北省的专升本考试已于4月30日举行&#xff0c;考试中&#xff0c;出现了许多不同的考试题目&#xff0c;我在网上找到一所高校专升本的大题&#xff08;好像是湖北师范的&#xff0c;后续会有湖北理工的大题真题解析&#xff0c;敬请期待&#xff09;&#xff0c;那么我…

024.反转链表

给定单链表的头节点 head &#xff0c;请反转链表&#xff0c;并返回反转后的链表的头节点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例 3&#xff1a; 输…

Web数字孪生引擎

Web数字孪生引擎是指用于在Web上创建和运行数字孪生的软件平台。它们通常提供一组API和工具&#xff0c;用于连接到实时数据源、可视化数据并创建交互式体验。Web数字孪生引擎被广泛应用于各种应用&#xff0c;例如工业物联网、智能建筑、城市管理和公共安全等。北京木奇移动技…

SpringCloudAlibaba:5.1Sentinel的基本使用

概述 简介 Sentinel是阿里开源的项目&#xff0c;提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。 官网 https://sentinelguard.io/zh-cn/ Sentinel的历史 2012 年&#xff0c;Sentinel 诞生&#xff0c;主要功能为入口流量控制。 2013-2017 年…

【GlobalMapper精品教程】078:计算点的平面(经纬度)坐标、面状数据的周长面积

文章目录 一、加载数据二、计算点的坐标三、计算面状数据的周长面积一、加载数据 在点状图层上右键,编辑属性。 属性表如下所示,可以看到,并没有点的经纬度或者平面坐标。 二、计算点的坐标 选择所有点→右键→属性样式功能→向选定的要素添加坐标边界功能。