Appium自动化测试框架1

电脑的浏览器 手机的浏览器 手机上的app

原生的应用 纯java 手机上的app apk

移动网页应用 纯HTML CSS 手机的浏览器上 电脑的浏览器上

混合应用 java html css

python代码 Appium python库 Appium 手机

都是代表本机

0.0.0.0

127.0.0.1

localhost

如何启动app

启动参数

安卓的版本

设置里面 关于本机

adb shell dumpsys window windows | findstr mCurrentFocus
adb shell dumpsys activity | find "mFocusedActivity"
都可以用来找包名和界面名
from appium import webdriver
import time# 启动一个字典 包装相应的启动参数
desired_caps = dict()# 平台的名字,安卓还是IOS 大小写无所谓
desired_caps['platformName'] = 'Android'# 平台的版本,(5.4.3 可以写 5.4.3 5.4 5)
desired_caps['platformVersion'] = '7.1.2'# 设备的名字,随便写,不能乱写
desired_caps['deviceName'] = 'samsung'# 要打开的应用程序 包名
desired_caps['appPackage'] = 'com.android.settings'# 要打开的界面 启动名 界面名
desired_caps['appActivity'] = '.Settings'# 连接appium服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)time.sleep(3)driver.quit()

如何通过代码跳转到其它app

from appium import webdriver
import time# 启动一个字典 包装相应的启动参数
desired_caps = dict()
# 平台的名字,安卓还是IOS 大小写无所谓
desired_caps['platformName'] = 'Android'
# 平台的版本,(5.4.3 可以写 5.4.3 5.4 5)
desired_caps['platformVersion'] = '7.1.2'
# 设备的名字,随便写,不能乱写
desired_caps['deviceName'] = 'samsung'
# 要打开的应用程序 包名
desired_caps['appPackage'] = 'com.android.settings'
# 要打开的界面 启动名 界面名
desired_caps['appActivity'] = '.Settings'# 连接appium服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)time.sleep(3)# 包名 界面名
driver.start_activity('com.android.Calendar','com.android.Calendar.ui.activity.MainActivity')time.sleep(3)driver.quit()

获取app的包名和界面名

from appium import webdriver
import time# 启动一个字典 包装相应的启动参数
desired_caps = dict()
# 平台的名字,安卓还是IOS 大小写无所谓
desired_caps['platformName'] = 'Android'
# 平台的版本,(5.4.3 可以写 5.4.3 5.4 5)
desired_caps['platformVersion'] = '7.1.2'
# 设备的名字,随便写,不能乱写
desired_caps['deviceName'] = 'samsung'
# 要打开的应用程序 包名
desired_caps['appPackage'] = 'com.android.settings'
# 要打开的界面 启动名 界面名
desired_caps['appActivity'] = '.Settings'# 连接appium服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)# 输出当前程序的包名
print(driver.current_package)
# 输出当前程序的界面名
print(driver.current_activity)# 包名 界面名
driver.start_activity('com.android.Calendar','com.android.Calendar.ui.activity.MainActivity')# 输出当前程序的包名
print(driver.current_package)
# 输出当前程序的界面名
print(driver.current_activity)driver.quit()
com.android.settings
.Settings
com.android.Calendar
.ui.activity.MainActivity

关闭所有关联的app 由driver启动的那些app

driver.close_app

print(driver.current_package)

不会报错 com.android.launcher3 //home

driver.quit() 关闭驱动对象

print(driver.current_package)

所以会报错

安装和卸载以及是否安装app

from appium import webdriver
import time
# 启动一个字典 包装相应的启动参数
desired_caps = dict()
# 平台的名字,安卓还是IOS 大小写无所谓
desired_caps['platformName'] = 'Android'
# 平台的版本,(5.4.3 可以写 5.4.3 5.4 5)
desired_caps['platformVersion'] = '7.1.2'
# 设备的名字,随便写,不能乱写
desired_caps['deviceName'] = 'samsung'
# 要打开的应用程序 包名
desired_caps['appPackage'] = 'com.android.settings'
# 要打开的界面 启动名 界面名
desired_caps['appActivity'] = '.Settings'# 连接appium服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)if driver.is_app_installed('com.example.jcy.wvtest'):driver.remove_app('com.example.jcy.wvtest')
else:driver.install_app('D:\WORK\wv.apk')

将应用置于后台

模拟home键 将应用放置后台中

from appium import webdriver
import time
# 启动一个字典 包装相应的启动参数
desired_caps = dict()
# 平台的名字,安卓还是IOS 大小写无所谓
desired_caps['platformName'] = 'Android'
# 平台的版本,(5.4.3 可以写 5.4.3 5.4 5)
desired_caps['platformVersion'] = '7.1.2'
# 设备的名字,随便写,不能乱写
desired_caps['deviceName'] = 'samsung'
# 要打开的应用程序 包名
desired_caps['appPackage'] = 'com.android.settings'
# 要打开的界面 启动名 界面名
desired_caps['appActivity'] = '.Settings'# 连接appium服务器
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)# 进入后台5秒 再回到前台
# 用于将当前应用程序在设备上置于后台5秒,然后再将其切换回前台。
driver.background_app(5)time.sleep(2)driver.quit()

热启动 :进入后台回到前台 

冷启动:关机再开 这种切断电源的行为

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

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

相关文章

土壤养分化验仪:农业生态与可持续发展

随着现代农业技术的不断进步,土壤养分化验仪在农业生产中扮演着越来越重要的角色。这款高科技设备以其高精度、高效率的特点,为农业生态与可持续发展提供了强有力的支撑。 一、农田土壤监测与管理 农田是土壤养分化验仪最主要的应用场所。通过对农田土壤…

【AI】DeepStream(14):图像分割deepstream-segmentation-test示例演示

【AI】AI学习目录汇总 1、简介 deepstream-segmentation-test示例演示了图像的语义分割。两个配置文件,分别加载U-Net和Res-UNet两种分割模型 unet_output_graph.uffunetres18_v4_pruned0.65_800_data.uffU-Net是一个在生物医学图像分割领域广泛应用的卷积神经网络(CNN),…

集团型企业组织架构复杂,业务线多,如何进行高效费用管控?

企业管理中流行这样一句话:“企业转型,财务先行”。对集团型企业而言,当今的发展形势下,通过财务战略全面转型、最终撬动企业价值提升,是一件难而正确的事情。 集团企业具有经营规模大、产业链多、分支机构多、地域跨度…

地下电子标识器探测仪ED8000选型注意事项

ED8000探测仪是一台集成了多频率、多种ID标识器调制模式、高低灵敏度调节、可读写标识器等全功能、高性能电子标识器探测仪。它有着极高的灵敏度,同时具备良好的噪声抑制能力,不仅适合专业测绘人员,普通操作人员也可以轻松掌握。 ED8000可支持模拟电子标…

洛谷 P1042 [NOIP2003 普及组] 乒乓球

洛谷 P1042 [NOIP2003 普及组] 乒乓球 题目背景 国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中 11 11 11 分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。华华就是其中一位…

2024亚洲国际餐饮展览会(北京餐饮展|火锅展|预制菜展会)

2024北京餐饮展会,2024北京食材展会,2024北京火锅展会,2024北京火锅食材展会,2024北京预制菜展会,2024北京预制食材展会, 2024亚洲国际餐饮展览会(北京餐饮展|火锅展|预制菜展会) …

【C语言】刷题笔记 Day2

【笔记】 【1】局部变量不初始化,默认放的随机值。 1 int n0; 2 scanf("%d",&n); //13.141 【2】这里虽然输入的是一个浮点数,但是只取整数部分。 【3】3.156e7 表示的是3.156*10的7次方。 【4】多组输入,保存和不保存…

基于 Windows Server 2019 部署域控服务器

文章目录 前言1. 域控服务器设计规划2. 安装部署域控服务器2.1. 添加 Active Directory 域服务2.2. 将服务器提升为域控制器2.3. 检查域控服务器配置信息 3. 管理域账号3.1. 新建域管理员账号3.2. 新建普通域账号 4. 服务器加域和退域4.1. 服务器加域操作4.2. 服务器退域操作 总…

Iperf基本用法

Iperf是一款开源的网络性能测试工具,它可以用来测量网络带宽、延迟、抖动和数据包丢失等网络性能指标。Iperf支持TCP和UDP协议,可以用于点对点或客户端-服务器等模式的网络测试。 安装Iperf 在Linux系统中,您可以使用包管理器安装Iperf。例如…

记录一下简单导入导出excel二级表头

数据库导入导出表头 之前的工具类GenerateExcelToFile新增两个导出这种二级表头方法 package com.njry.utils;import cn.hutool.core.util.IdUtil; import com.njry.config.FileProperties; import com.njry.exception.BadRequestException; import org.apache.poi.hssf.user…

OpenGL的学习之路

Qt如何创建OpenGL的渲染窗口? 类比GLFW库,Qt提供了OpenGL的渲染窗口类QOpenGLWidget: 1、重写initializeGL()和resizeGL()函数来设置OpenGL状态并提供透视图转换。 2、重写paintGL()来绘制3D场景,只调用OpenGL函数。 3、还可以…

python 基础综合应用——小开发

#python 基础综合应用——小开发 综合复习 变量- 循环- 函数- 模块 开发 名片管理系统 名片管理系统介绍 名片管理系统可以理解成花名册软件,通过个人新建人的信息后可以进行查询等简单操作的程序 名片管理系统有三个作用, 1.新建名片 2.显示全部名…

【设计模式】装饰者模式里Java实现

插: AI时代,程序员或多或少要了解些人工智能,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家(前言 – 人工智能教程 ) 坚持不懈,越努力越幸运,大家…

【VIM的使用】

Vim 是一个非常强大的文本编辑器,尤其在 Linux 环境下被广泛使用。它基于 vi 编辑器开发而来,增加了许多功能和改进。下面是一个简化的 Vim 教程,帮助你快速上手: 启动 Vim 要启动 Vim,只需在终端中输入 vim [filen…

Leetcode刷题2---两数相加 Python

目录 题目及分析解法一: 迭代法解法二: 递归法解法三:反转链表法 题目及分析 (力扣序号2:两数相加) 给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储…

python之音频处理(2)两个音频文件的合并

from pydub import AudioSegment# 加载两个音频文件 audio1 AudioSegment.from_file(r"D:\websiteDownload\huanxing.wav") audio2 AudioSegment.from_file(r"D:\websiteDownload\我今天被一件事情搞得很烦.wav")# 设置间隔(单位:…

Altium Designer专业PCB设计软件下载安装 Altium Designer安装包下载获取

在电子设计的广袤领域中,PCB设计无疑占据着重要的地位。而Altium Designer作为一款业界领先的电子设计自动化软件,其提供的先进布局工具,无疑为设计师们打开了一扇通往高效、精确设计的大门。 在PCB设计的核心环节——布局中,Alti…

初学Spring之自动装配 Bean

Bean 的作用域: 1.单例模式(Spring 默认机制) scope“singleton” 2.原型模式:每次从容器中 get 时,都会产生一个新对象 scope"prototype" 3. request、session、application,只能在 web 开…

《c语言结构体怎么函数传参》

在C语言中,结构体(struct)是一种用户自定义的数据类型,用于组合多个不同类型的数据成员。当你要将结构体作为参数传递给函数时,可以按照以下几种方式进行: 值传递(Pass by Value)&a…

【pytorch扩展】CUDA自定义pytorch算子(简单demo入手)

Pytorch作为一款优秀的AI开发平台,提供了完备的自定义算子的规范。我们用torch开发时,经常会因为现有算子的不足限制我们idea的迸发。于是,CUDA/C自定义pytorch算子是不得不磕了。 今天通过一个小实验来梳理自定义pytorch算子都需要做哪些准…