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.mfbz.cn/a/771087.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UE插件与云渲染:10个提升效率的选择

Unreal Engine(虚幻引擎)的插件生态丰富多样,从提升视觉效果到优化工作流程,为开发者提供了无限扩展的可能。本文推荐10款备受欢迎的插件,助你激发创意,提升开发效率. 一、地牢建筑师:程序化关…

【论文速读】|FuzzAug:探索模糊测试作为神经网络测试生成的数据增强

本次分享论文:FuzzAug: Exploring Fuzzing as Data Augmentation for Neural Test Generation 基本信息 原文作者:Yifeng He, Jicheng Wang, Yuyang Rong, Hao Chen 作者单位:University of California, Davis 关键词:软件测试…

Dungeonborne联机失败、延迟高、卡顿的解决方法

Dungeonborne将第一人称动作的即时性与经典的西幻RPG职业设计巧妙融合,为玩家带来了一场前所未有的游戏体验。在这款沉浸式第一人称PvPvE地下城探险游戏中,我们可以独自深入探索,也可以与值得信赖的伙伴并肩作战,共同揭开地下城的…

汽车电子工程师入门系列——AUTOSAR通信服务框架(下)

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

使用微信开发者工具连接gitee

编写代码 打开微信开发者工具 编写小程序代码 提交代码 在微信开发者工具提交代码到gitee仓库的步骤: 1.在gitee创建仓库,得到仓库url 2.微信开发者工具设置远程仓库 点击版本管理-->点击设置-->网络和认证-->认证方式选择 使用用户名和…

【重磅】“一招”解决智能算法中不满足“预期”的问题【以微电网优化调度为例】

1主要内容 之前完整复现了微电网优化调度的模型,具体链接为:【完全复现】基于改进粒子群算法的微电网多目标优化调度,这是一个并不复杂的模型,甚至不借助智能算法,我们也能大致分析出电网、柴油发电机、微型燃气轮机等…

英国皇家物理学会(IOP)数据库简介及个人获取IOP文献的方法

一、英国皇家物理学会(IOP)简介 英国皇家物理学会(IOP)成立于1873年,IOP现有科技期刊75种,具有较高的科研水平,还与多个世界知名的学协会合作出版,包括:中国物理学会、欧洲物理学会、德国物理学会、日本应用物理学会、欧洲光学学会、国际计量…

论文学习笔记1:Federated Graph Neural Networks: Overview, Techniques, and Challenges

文章目录 一、introduction二、FedGNN术语与分类2.1主要分类法2.2辅助分类法 三、GNN-ASSISTED FL3.1Centralized FedGNNs3.2Decentralized FedGNNs 四、FL-ASSISTED GNNS4.1horizontal FedGNNs4.1.1Clients Without Missing Edges4.1.1.1Non-i.i.d. problem4.1.1.2Graph embed…

小白福音:teamOS系统,一键部署企业网盘,实现在线预览功能

在传统的办公模式中,当我们需要查看一份文件时,往往需要下载、打开、编辑等一系列繁琐的步骤,如果是PDF、CAD、Markdown等特殊格式,还需要安装各种软件才能打开。 但最近get到了一个好用的东西,如果同事发来的文件格式…

轮廓检测(python和c++实现)

利用轮廓检测,我们可以检测物体的边界,并在图像中轻松定位。这通常是许多有趣应用的第一步,如图像前景提取、简单图像分割、检测和识别。 无人看管物体检测:公共场所的任何无人看管物体一般都被视为可疑物体。一种有效而安全的解…

一文搞懂MySsql的Buffer Pool

Buffer Pool是什么 Buffer Pool是MySQL数据库中一个非常关键的组件。数据库中的数据最终都是存放在磁盘文件上的。但是在对数据库执行增删改查操作时,不可能直接更新磁盘上的数据。因为如果直接对磁盘进行随机读写操作,那速度是相当的慢的。随便一个大磁…

联系表单提交后,自动发送邮件的实现方法?

联系表单自动邮件回执功能怎么样?如何设置邮件回执? 联系表单是用户与网站所有者沟通的重要渠道。为了提升用户体验,许多网站会在联系表单提交后自动发送确认邮件给用户。AokSend将探讨如何实现这一功能,介绍不同的方法和步骤&am…

如何在 Selenium Python 中解决验证码 | 2024 完整指南

由于在进行网络自动化时遇到验证码是让许多人感到不知所措的问题。这些验证码专为区分人类用户和自动化脚本而设计,对于使用Selenium进行网络爬虫或自动化任务而言,无疑是一个巨大的挑战。2024年的完全指南将为您提供全面的解决方案,帮助您高…

LabVIEW新能源汽车电池性能测试系统

新能源汽车的核心部件之一是电池,其性能直接关系到整车的续航里程、安全性和寿命。为了确保电池的性能和可靠性,测试是必不可少的环节。本文介绍了一种基于LabVIEW的新能源汽车电池性能测试系统,通过LabVIEW与数据采集设备的无缝集成&#xf…

【Spring Boot 源码学习】初识 ConfigurableEnvironment

《Spring Boot 源码学习系列》 初识 ConfigurableEnvironment 一、引言二、主要内容2.1 Environment2.1.1 配置文件(profiles)2.1.2 属性(properties) 2.2 ConfigurablePropertyResolver2.2.1 属性类型转换配置2.2.2 占位符配置2.…

docker容器技术、k8s的原理和常见命令、用k8s部署应用步骤

容器技术 容器借鉴了集装箱的概念,集装箱解决了什么问题呢?无论形状各异的货物,都可以装入集装箱,集装箱与集装箱之间不会互相影响。由于集装箱是标准化的,就可以把集装箱整齐摆放起来,装在一艘大船把他们…

C++基础(五):类和对象(上)

从今天开始,我们正式进入面向对象编程,这是C与C语言的重要区别,编程思想发生变化,那到底什么是面向对象编程呢?接下来,我们慢慢的深入学习。 目录 一、面向过程和面向对象初步认识 1.1 面向过程 1.2 面…

【Python】变量与基本数据类型

个人主页:【😊个人主页】 系列专栏:【❤️Python】 文章目录 前言变量声明变量变量的命名规则 变量赋值多个变量赋值 标准数据类型变量的使用方式存储和访问数据:参与逻辑运算和数学运算在函数间传递数据构建复杂的数据结构 NameE…

腾讯混元文生图开源模型推出小显存版本,6G显存即可运行,并开源caption模型

7月4日,腾讯混元文生图大模型(混元DiT)宣布开源小显存版本,仅需6G显存即可运行,对使用个人电脑本地部署的开发者十分友好,该版本与LoRA、ControlNet等插件,都已适配至Diffusers库;并…

达梦数据库 页大小与数据库字段长度的关系

对于达梦数据库实例而言,页大小 (page_size)、簇大小 (extent_size)、大小写敏感 (case_sensitive)、字符集 (charset) 这四个参数,一旦确定无法修改;如果过程中发现这些数据设置的不对,只能是重新新建数据库实例,而不…