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启动参数设置

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(用于设置网络状态),并打开设置主页面。

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

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

相关文章

【强化学习】gymnasium自定义环境并封装学习笔记

【强化学习】gymnasium自定义环境并封装学习笔记 gym与gymnasium简介gymgymnasium gymnasium的基本使用方法使用gymnasium封装自定义环境官方示例及代码编写环境文件__init__()方法reset()方法step()方法render()方法close()方法 注册环境创建包 Package(最后一步&a…

利用智能交流控制设计方法实现更好的家电安全

从机电到数字控制的转变首先是通过现成的电子设备完成的——系统架构是围绕 MCU、分立晶体管和高压双向可控硅构建的。 家用电器的这场小型革命部分是由于减少能源和水的浪费以及提高易用性的需求日益增长而推动的。 随着市场及其标准的化,性能和成本效率一直是家…

【docker hub镜像源失效】2024年6月6日 docker 国内镜像源失效

文章目录 概述中科大镜像源阿里镜像源其他镜像源可用的镜像源写在最后 之前违反社区规定了,做了和谐 概述 大家都知道使用docker hub官方镜像需要魔法,虽然大部人有魔法,但是网速也是很慢,还有部分同学没有,全靠国内各…

每日5题Day25 - LeetCode 121 - 125

每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前! 第一题:121. 买卖股票的最佳时机 - 力扣(LeetCode) class Solution {public int maxProfit(int[] prices) {if(prices.length 1){return 0;}//dp…

深入理解计算机系统 CSAPP 家庭作业6.37

S256 N64时: sumA:这个很简单了,不说了 sumB:如下表. i递增时一直不命中 读到j1,i0 即读a[0][1]时 组0存放的是a[48][0] -a[48][3] 接着读a[1][1]时,组16放的是a[49][0]-a[49][3],j递增之后还是一直不命中 组0:a[0][0]a[16][0]a[32][0]a[48][0]a[0][1]组16:a[1][0]a[17][…

Unity2D计算两个物体的距离

1.首先新建一个场景并添加2个物体 2.创建一个脚本并编写代码 using UnityEngine;public class text2: MonoBehaviour {public GameObject gameObject1; // 第一个物体public GameObject gameObject2; // 第二个物体void Update(){// 计算两个物体之间的距离float distance Vec…

深度解析文件或目录损坏无法读取的应对之道

在数字化时代,数据已成为我们生活和工作中不可或缺的一部分。然而,当遭遇文件或目录损坏且无法读取的困境时,我们可能会面临巨大的挑战。本文将深入探讨这一现象,分析其背后的原因,并提供有效的数据恢复方案&#xff0…

完美的移动端 UI 风格让客户无可挑剔

完美的移动端 UI 风格让客户无可挑剔

获取在 Windows 10/11 上编辑 PDF 的 6 大方法(免费)

作为全球最受欢迎的操作系统,Microsoft Windows的每一次升级都引起了公众的关注。其中,Windows 10 和 Windows 11 是最常用的版本。 一些需要在 Windows 11/10 上处理繁琐的 PDF 任务的人可能会问:Microsoft Windows 有 PDF 编辑器吗&#x…

phpStudy里面的MySQL启动不了

C:\Users\Administrator>netstat -an | find "3306" TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING TCP 0.0.0.0:33060 0.0.0.0:0 LISTENING TCP [::]:3306 [::]:0 LISTENING TCP [::]:33060 [::]:0 LISTENING 从你提供的输出结果可以看到,端口3306和33060已经…

汽车EDI:波森Boysen EDI项目案例

企业A作为Boysen 的供应商,为了响应Boysen的号召,需要与其实现EDI对接。由于企业A此前并没有EDI项目的实施经验,对EDI项目的实施流程、技术要求等内容不知道应该从何下手。 为了实现EDI对接意味着企业A需要具备自己的EDI系统,从而…

贪心+思维,CF1615C - Menorah

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1615C - Menorah 二、解题报告 1、思路分析 两次连续操作相当于交换两位奇数次操作, 改变了01频数01频数是否能一样 -> -1 否则就是调整到该在的位置的最小操作次数 不一样的位置一定是偶数个,否则01频数…

利器放送丨如何在PS里使用stable diffusion插件?

各位设计界的领军人物们,你们一定对PS(也就是大家熟知的Photoshop)不陌生吧。同样,对于AI领域的精英们,SD(stablediffusion)这款软件也应该是如雷贯耳。这两款软件,各自独立且功能强…

Flutter调用本地web

前言: 在目前Flutter 环境中,使用在线 webview 是一种很常见的行为 而在 app 环境中,离线使用则更有必要 1.环境准备 将依赖导入 2.引入前端代码 前端代码有两种情况 一种是使用打包工具 build 而来的前端代码 另一种情况是直接使用 HTML 文件 …

HTML静态网页成品作业(HTML+CSS)—— 校园贷主题网页(2个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有2个页面。 二、作品演示 三、代…

vue3-sfc-loader动态加载一个异步vue组件生成cesium画面

在 Vue.js 3 中,使用 vue3-sfc-loader 可以动态加载异步的 Vue 单文件组件(.vue 文件)。这个工具允许你在运行时根据需要加载和解析 .vue 文件,使得组件的加载变得更加灵活和动态。 下面是一个简单的示例,演示如何使用…

DDei在线设计器-DDeiCore-面板插件

DDei-Core-面板 面板是一个可见的功能界面,既可以装载到布局(Layout)上,也能够被嵌套进其它面板,这一篇对DDei-Core的提供的主要面板进行介绍,最后以表格的形式列举其它面板。 如需了解详细的API教程以及参…

Python 全栈系列252 一些小计划

说明 最近整体进展还比较顺利,不过也因为这样,好几个线头怎么继续平衡和推进需要稍微捋一下。 内容 按重要|紧急方法来看,线头1是重要且紧急的,QTV200也算重要且紧急,其他都算是重要不紧急。 线头1: 数据清洗 虽然…

超好用的几个提升知识储备的网站-搜嗖工具箱

和图书 https://www.hetushu.com/ 一个好用的免费看小说网站。和图书是一个提供各种热门电子书,书籍,小说免费在线阅读的网站,涵盖网游、玄幻、穿越、科幻、仙侠、都市、武侠、历史、竞技、军事灵异等多个种类的小说。在这个网站看小说最大的感触简单干净&#xff…

基于cortex-M3的rtos原理(上)

一、RTOS是什么? 下面是网上搜索到的定义: 看到系统一般会想到window,linux这种,但是rtos区别于它们的是占用资源小,实时性强,可以运行在资源受限的mcu上。一些soc厂商编写的sdk里带有添加“任务”的功能&…