03-appium环境配置和启动参数设置

参考文章: https://blog.csdn.net/lovedingd/article/details/110949993

一、appium介绍

Appium是一个开源、跨平台的自动化测试框架,支持Android、IOS等平台,同时也支持多语言,比如:Java、Python等。

Appiumu通过扩展Selenium的Webdriver JSON协议,使得IOS和Android的自动化测试代码可以共用,通过调⽤UIAutomator的命令,实现Android应用的自动化测试。

二、appium工作原理

Appium的核心是一个web服务器,提供了一套REST接口。它接收客户端(就是我们编写的测试代码)的连接,监听客户端发送的命令,然后在移动设备上执行这些命令,最后将执行结果放在http响应中返回给客户端。

特点:支持多语言编写测试代码;可以将appium服务端放在不同的机器上。

三、appium环境搭建

搭建appium自动化测试环境,主要配置两个东西:

  • appium的客户端,选择对应平台下载,傻瓜式安装即可。
  • appium-python库:通过pip install appium-python-client命令进行安装即可。

注:启动appium客户端时,必须右键选择 "以管理员身份运行",否则在运行过程中会遇到权限问题。

四、appium启动参数设置

python 复制代码
from appium import webdriver

desired_cap = {}
# 必须参数,指定测试设备的平台属性,不区分大小写。
desired_cap['platformName'] = 'Android'
# 必须参数,指定测试设备的安卓版本号(设置->关于平板电脑本机->Android版本)
desired_cap['platformVersion'] = '6.0.1'
# 可以写任意的值,但不能为空。
desired_cap['deviceName'] = '127.0.0.1:7555'
# 必须参数,指定被测软件的包名
desired_cap['appPackage'] = 'com.android.settings'
# 必须参数,指定要打开app的哪个页面
desired_cap['appActivity'] = '.Settings'
# 非必须参数,但一般需要指定
desired_cap['automationName']='Uiautomator2'
# 设置app应用的重置策略。用于指定每次测试完毕之后,对测试环境的清理程度。
#    默认:测试后,停止app应用、清除app应用数据,不卸载apk。
#    fullReset:测试后,停止app应用、清除app应用数据、卸载apk。
#    noReset:测试后,不停止app应用、不清除app应用数据、不卸载apk。
desired_cap['noReset'] = True
# 设置命令执行的超时时间
desired_cap['newCommandTimeout'] = 6000
# 用于设置中文输入
desired_cap['unicodeKeyboard'] = True
desired_cap['resetKeyboard'] = True

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_cap)

执行上述程序后,报错:AttributeError: 'NoneType' object has no attribute 'to_capabilities'。

1)报错原因分析

由于python的appium包是基于selenium的, 而当我们安装了最新版的selenium和最新版的appium, 就会产生版本冲突问题, 导致:AttributeError: 'NoneType' object has no attribute 'to_capabilities'异常发生。

2)解决办法

首先,卸载selenium和appium:pip uninstall seleniumpip uninstall appium-python-client

然后,安装低版本的appium:pip install appium-python-client==2.0。这时pip会将对应版本的selenium一起下载,所以就不用再另外安装selenium了。

3)程序执行结果

重新执行上述程序后,会在模拟器中安装Appium Settings(用于设置网络状态),并打开设置主页面。

相关推荐
f***241110 小时前
高效自动化管理临时文件的技术方案
运维·自动化
xybDIY11 小时前
亚马逊云 Organizations 组织 Link 账号关联与解绑自动化解决方案
运维·自动化·云计算·aws
北京耐用通信12 小时前
耐达讯自动化赋能:Canopen转Profibus网关水泵连接新范式
人工智能·科技·物联网·自动化·信息与通信
AC赳赳老秦12 小时前
Shell 脚本批量生成:DeepSeek 辅助编写服务器运维自动化指令
运维·服务器·前端·vue.js·数据分析·自动化·deepseek
Dxy123931021615 小时前
Python如何使用DrissionPage做自动化:简单入门指南
开发语言·python·自动化
qq_5260991315 小时前
机器视觉网卡的全面选型指南
数码相机·计算机视觉·自动化
xiao5kou4chang6kai416 小时前
贯通LLM应用→数据分析→自动化编程→文献及知识管理→科研写作与绘图→构建本地LLM、Agent→多模型圆桌会议→N8N自动化工作流深度应用
人工智能·自动化·llm·科研绘图·n8n
2501_9419820517 小时前
基于自动化协议的企微外部群消息调度与状态回执实现逻辑
运维·自动化·企业微信
北京耐用通信17 小时前
耐达讯自动化“通关文牒”:Canopen转Profibus网关,贴片机的“协议通关秘籍”
人工智能·科技·网络协议·自动化·信息与通信
捷米研发三部17 小时前
自动化生产线中AB PLC通过协议转换网关和DeviceNet协议的机器人进行通讯案例
网络·机器人·自动化