pyest+appium实现APP自动化测试,思路全总结在这里

news2024/10/6 18:22:32

目录

01、appium环境搭建

2、搭建python+pytest+appium环境

3、安装pycharm搭建项目编写脚本

4、执行测试

绵薄之力


01、appium环境搭建

  • 安装nodejs

http://nodejs.cn/

为什么要安装nodejs?

因为appium这个工具的服务端是由nodejs语言开发的

  • 安装jdk,并且配置环境变量

为什么要装jdk?

因为我们要测试安卓,那么安卓的调试环境需要依赖jdk

  • 安装sdk,并配置环境变量

为什么要装sdk?

因为我们要测试安卓,sdk就是安卓开发调试的环境

  • 安装appium服务端

1. 命令行形式的appium server

npm install appium@1.15.1

2. appium desktop版本,在官网下载即可

3. 上述两种之间的区别

桌面版不仅仅是一个appium server,他还包括了元素定位调试以及录制脚本的功能

命令行版本仅仅是一个appium server

  • 安装appium-doctor

npm install appium-doctor

这个工具是用来检查appium的环境的,但是注意并不是说在这里检查没有错误就能代表我的环境一定没有问题

  • 安装安卓模拟器(并不是必须)

夜神、mumu,等等

 

2、搭建python+pytest+appium环境

  • 安装python

  • 安装pytest

pip install pytest

  • 安装selenium

pip install selenium

  • 安装appium

pip install Appium-Python-Client

  • 安装allure-pytest

pip install allure-pytest

3、安装pycharm搭建项目编写脚本

  •  初始化driver代码编写

# !/usr/bin python3                        

# encoding: utf-8 -*-                        

# @author: 沙陌 微信:Matongxue_2

# @Time: 2021/5/21 10:25

# @Copyright:北京码同学网络科技有限公司



#移动端初始化用到的参数特别多

#下面的这个字典里的参数是脚本告诉appium服务端我都要干什么,基础的能力参数

import time

import allure

from appium import webdriver

from selenium.webdriver.common.by import By

desired_caps = {

   #这表示你要测试的设备类型,安卓就写android,ios就写ios

   'platformName':'android',

   #这表示你要测试的app的路径

   'app':'C:\\Users\\lixio\\Desktop\\douban.apk',

   #看起来像是设备名称,但是注意在安卓上这个位置的值随便写都行,

   #这个并不能够代表你要执行的设备是哪个

   'deviceName':'xxx',

   #这个参数才是真正的指定执行哪台设备的参数,

   # 他的值写的就是使用adb devices命令看到的设备名称

   'udid':'127.0.0.1:62001',

   #该参数非常重要,表示在执行测试时不重签名apk文件,

   # 默认情况下appium会针对apk文件进行重签名操作,

   # 但是现在的app都有签名篡改的校验,如果被重签名了那么这个app就不能正常使用了

   'noSign':True,

   #该参数表示在执行appium测试时使用appium的辅助输入法,

   # 好处是支持中文输入支持键盘隐藏

   'unicodeKeyboard':True,

   #表示执行完测试之后将手机的输入法重置回手机原来的

   'resetKeyboard':True,

   #表示脚本和appium服务之间连接的session超时时间,单位是秒

   'newCommandTimeout':600

}

# 初始化driver,参数里看到的url就是appium服务的地址 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

#增加隐式等待

driver.implicitly_wait(10) #单位是秒

```
  • 元素查看

可以使用sdk自带的uiautomatorviewer.bat这个工具,也可以使用appium desktop版本的元素查看

  • 豆瓣登录脚本编写,采用pytest方式

@allure.title('豆瓣登录')

def test_login():

   # id定位在安卓端对应的元素属性是resource-id

   driver.find_element(By.ID,'com.douban.frodo:id/left').click()

   driver.find_element(By.ID,'com.douban.frodo:id/input_user_name').send_keys('18729399607')

   driver.find_element(By.ID,'com.douban.frodo:id/input_password').send_keys('abc123456')

   driver.find_element(By.ID,'com.douban.frodo:id/sign_in_douban').click()

   #操作完成后,必须有断言来判断结果是否正常

   time.sleep(3)

   page_source = driver.page_source

   assert '书影音' in page_source

 

4、执行测试

  • 执行前准备工作

1. 启动appium服务,在命令行做如下操作

2. 确保手机设备连接正常

  • 执行测试

在pycharm的Terminal中执行如下命令

pytest -sv --alluredir ./report/allure-results --clean-alluredir

  • 生成allure测试报告

allure generate ./report/allure-results -o ./report/allure-report --clean


绵薄之力

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…

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

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

相关文章

Lambda表达式的使用和省略模式

Lambda表达式的使用和省略模式一、 Lambda表达式使用1、 Lambda格式2、演示demo:线程启动,底下分别是三种实现方式3、 Lambda使用的前提4、Lambda表达式的几种类型二、省略模式1、 几种可以省略的场景2、 注意事项一、 Lambda表达式使用 1、 Lambda格式…

两种方式对el-table二次封装

1、序言 完整源码&#xff1a;el-table-example: 两种方式对el-table二次封装 最近在公司写了好多的后台管理系统&#xff0c;管理系统很大部分都是elementui下的el-table&#xff0c;el-table中有很多 <el-table-column></el-table-column>是重复的&#xff0c;像…

Redis_概述_特性_IO模型

本章要点 掌握NoSql数据库的概念和与sql数据库的区别初步了解Redis内存数据库了解Redis内存数据库的优点及其原因掌握Redis的多线程IO模型学习Redis的安装和配置 Redis简介 Redis 全称 Remote Dictionary Server 远程字典服务! 使用C语言编写,支持网络,可基于内存也可以持久化…

Scrapy爬虫框架(概念)

Scrapy 入门教程 | 菜鸟教程 (runoob.com) Scrapy是一个快速功能强大的网络爬虫框架 Scrapy的安装 通过 pip 安装 Scrapy 框架: pip install Scrapy 安装后小测&#xff1a; 执行 scrapy ‐h Scrapy不是一个函数功能库&#xff0c;而是一个爬虫框架。 Scrapy架构图(绿线是…

【ROS2指南-4】理解ROS2话题

目标&#xff1a;使用 rqt_graph 和命令行工具来反思 ROS 2 主题。 教程级别&#xff1a;初学者 时间&#xff1a; 20分钟 内容 背景 先决条件 任务 1 设置 2 rqt_graph 3 ros2主题列表 4 ros2主题回显 5 ros2 主题信息 6 ros2界面展示 7 ros2主题发布 8 ros2 主题赫…

光纤能取代网线吗?

光纤与铜缆之间的较量已持续了十多年。现如今随着云计算、5G 等新型业务的不断涌现&#xff0c;数据中心规模不断的扩大&#xff0c;其架构与布线也越来越复杂&#xff0c;而光纤的轻量化及逐渐降低的成本&#xff0c;使得主干网设备对光纤的需求也越来越旺盛&#xff0c;在大型…

pikachu靶场-xss

XSS漏洞攻击原理跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码&#xff0c;当用户浏览该页之时&#xff0c;嵌入其中Web里面的Script代码会被执行&#xff0c;从而达到恶意攻击用户的目的。一般XSS可以分为如下几种常见类型&#xff1a;1.反射性XSS;2.存储型XSS;3.…

成为钢铁侠!只需一块RTX3090,微软开源贾维斯(J.A.R.V.I.S.)人工智能AI助理系统

梦想照进现实&#xff0c;微软果然不愧是微软&#xff0c;开源了贾维斯(J.A.R.V.I.S.)人工智能助理系统&#xff0c;贾维斯(jarvis)全称为Just A Rather Very Intelligent System&#xff08;只是一个相当聪明的人工智能系统&#xff09;&#xff0c;它可以帮助钢铁侠托尼斯塔克…

何为智能驾驶的「摩尔定律」?这家芯片方案商给出自己的答案

“我觉得&#xff08;高速NOA&#xff09;价格下降的速度可能会是非常快的&#xff0c;”4月6日&#xff0c;地平线技术开放日上&#xff0c;地平线副总裁、软件平台产品线总裁余轶南在与高工智能汽车沟通中称&#xff0c;“到2024年底&#xff0c;约100TOPS的高速NOA&#xff…

Lottie加载的一些坑

Lottie是一个非常强大的动画库&#xff0c;可以渲染一些非常绚丽的动画。然而在使用的过程中&#xff0c;会遇到一些诡异的问题。通常&#xff0c;这不是使用方式上有什么问题&#xff0c;大都是UE产出的lottie本身存在问题。本来之前的UE小哥还不错的&#xff0c;跳槽后来了个…

【详解 进程通信】之 System V 共享内存

简介大致操作步骤介绍结果展示key值的获取创建 | 获取共享内存使用共享内存段解除共享内存段销毁共享内存段&#xff08;重点&#xff09;命令行方式销毁共享内存段系统调用销毁共享内存使用共享内存进行进程间通信简介 共享内存可以让多个进程共享同一块内存&#xff0c;也就…

如何实现Chatgpt写文章(附chatgpt3.5免费接口)

申明&#xff1a;本次只是说一下实现思路&#xff0c;官方的接口以及如何实现方式&#xff0c;本文没有提及&#xff0c;这次只是一个思路&#xff0c;若想代替人工完成质量还差的很远&#xff0c;请审核大大放行 今天再次优化了代码&#xff0c;修复了一些bug&#xff0c;考虑…

单片机程序是如何运行起来

多年前在学习计算机原理的时候曾经问过老师一个问题&#xff0c;就是我们编写的程序是怎么在计算机中运行起来的&#xff0c;希望有个完整的思路&#xff0c;现在通过网络收集和整理了这个问题&#xff0c;相当于对这个问题又做了一个认识&#xff0c;有了新的体会。以stm32单片…

Go 语言切片是如何扩容的?

原文链接&#xff1a; Go 语言切片是如何扩容的&#xff1f; 在 Go 语言中&#xff0c;有一个很常用的数据结构&#xff0c;那就是切片&#xff08;Slice&#xff09;。 切片是一个拥有相同类型元素的可变长度的序列&#xff0c;它是基于数组类型做的一层封装。它非常灵活&am…

VCS4 debug with DVE

1、重点讲解&#xff1a; 在verilog源代码中嵌入VCD 系统函数&#xff0c;重点如testbench文件中。VCD文件是VCS产生的仿真波形文件&#xff0c;未经压缩&#xff0c;占用空间较大。VCD是压缩后的波形文件。 编译、仿真以生成VCD文件。 在后处理模式中使用激活DVElog对产生的…

【Javaee】SpringMVC_day01

文章目录1&#xff0c;SpringMVC简介1.1 SpringMVC概述2&#xff0c;SpringMVC入门案例2.1 需求分析2.2 案例制作步骤1:创建Maven项目&#xff0c;并导入对应的jar包步骤2:创建控制器类步骤3:创建配置类步骤4:创建Tomcat的Servlet容器配置类步骤5:配置Tomcat环境步骤6:启动运行…

JS字符串对象

、 JS字符串对象 1.1 内置对象简介 在 JavaScript 中&#xff0c;对象是非常重要的知识点。对象可以分为两种:一种是“自定义对象”外一种是“内置对象”。自定义对象&#xff0c;指的是需要我们自己定义的对象&#xff0c;和“自定义函数”是一些道理;内置对象&#xff0c;…

力扣刷题笔记26——最小的k个数/快速排序学习/快排与冒泡的时间复杂度

最小的k个数/快速排序学习/快排与冒泡的时间复杂度问题我的代码示例代码快速排序代码问题 来自力扣&#xff1a; 输入整数数组 arr &#xff0c;找出其中最小的 k 个数。例如&#xff0c;输入4、5、1、6、2、7、3、8这8个数字&#xff0c;则最小的4个数字是1、2、3、4。示例 …

1672_MIT 6.828 xv6中如何通过构建环境让系统中增加一个可执行调用文件

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 前面已经分析了如何实现一个系统调用&#xff0c;这个过程的梳理也已经整理成了一份学习笔记。这一次看一下&#xff0c;如何让OS的系统中增加这样的一个可执行的文…

10.网络爬虫—MongoDB详讲与实战

网络爬虫—MongoDB详讲与实战MongoDBMongoDB安装创建数据目录1.数据库操作2.集合操作3.文档操作4.索引操作5.聚合操作6.备份与恢复MongoDB增删改查mongodb集合的增删改查数据插入到表数据的查看删除数据更新数据PyMongo连接数据库第二步 选择需要使用的数据库和集合PyMongo增删…