appium+python ui自动化环境配置

版权声明:本文为CSDN博主「桂圆干龙眼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42617600/article/details/114111785
(超级加倍声明!!!)

根据原文有删减&修改

前言

  • 电脑系统:win11&x64
  • 手机:安卓(ios需要用xcode ps:macbook)
  • 需要的工具可以在这里下载,https://pan.baidu.com/s/1MupElpYcmeQH3uPQ1CUWjw 提取码:AJDG

安装

  1. python 3.9.11
  2. jdk 17.0.8
  3. 编辑器PyCharm 2023.3.1
  4. Appium-windows-x.x 1.15.1
  5. Appium_Python_Client 3.1.1
  6. Android SDK

安装,迈开腿的第一步
在这里插入图片描述

python(它可以用于桌面应用,游戏开发,机器学习, 数据分析, 网络爬虫…)

勾选Add Python x.x to PATH(没有勾选的安装成功后可手动在环境变量里配置)
Install Now
在这里插入图片描述
安装中…
在这里插入图片描述
安装成功
在这里插入图片描述
验证是否成功,终端输入‘python’,出现以下内容就成功了
在这里插入图片描述

jdk(Java 语言的软件开发工具包)

appium server好像只支持1.8的jdk,so有时候太优秀不一定能被认可(狗头保命)
在这里插入图片描述
下一步…
在这里插入图片描述
下一步…
在这里插入图片描述
wait wait …
在这里插入图片描述
安装成功,需要在环境变量里配置一下
在这里插入图片描述
新建一个’JAVA_HOME’
在这里插入图片描述
把‘JAVA_HOME’添加到path里,注意是添加不是替换,后果不堪设想
在这里插入图片描述
确定确定确定,打开cmd运行测试一下是否安装成功,输入‘java -version’,成功
在这里插入图片描述

编辑器PyCharm(敲代码的)

Appium-windows-x.x(运行脚本需要,可查看运行日志,可以获取app页面元素)

Appium_Python_Client(调用客户端库和 Appium Server 进行通信)

Android SDK(手机baiandroid系统的开发发包,用来执行命令设置手机、传送文件、安装应用、查看手机界面等)

这几个就劳驾去原文章看教程吧 不搬了太累了
在这里插入图片描述

连接手机
敲黑板,重点来了,做app自动化肯定要用到手机噻,拿usb连接电脑(chā它!!- 原作者写的 我觉得他有点🔥)

(1) 拿出你的手机-----打开手机设置------找到关于手机-------一直点击版本号直到出现提示

(2) 打开手机的开发者选项,该开的开,该关的关,特别是USB调试这里一定要打开

还有USB设置需要改一下,暂时只发现这两个比较重要,有兴趣的可以研究一下开发人员选项

(3) 测试是否连接成功,在终端输入‘adb devices -l’,查看连接的设备,如果列表为空,检查一下是不是有以上原因(1)(2)

累了 先不抄了 未完待续…

问题记录:

  1. 文章中原作者使用的 Appium-python-client 是1.x版本的和现在最新的3.x版本的初始化部分存在gap
# 导入webdriver
from appium import webdriver
from appium.options.android import UiAutomator2Options

# 初始化参数
appium_options = UiAutomator2Options()
appium_options.app_activity = 'xxxxx'
appium_options.app_package = 'com.xxxxx'
appium_options.platform_name = 'android'
appium_options.device_name = "xx"
appium_options.no_reset = True
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',
                          options=appium_options)
driver.implicitly_wait(5)
  1. 调试过程中发现所使用的oppo-findX3 型号的测试机 在被appium调起时会报错 (在时间紧任务重的背景下 果断换了一部测试机 就可以正常使用)
An unknown server-side error occurred while processing the command. Original error: Error executing adbExec. Original error: 'Command 'D:\\android-sdk\\platform-tools\\adb.exe -P 5037 -s 3e91e5e5 shell settings delete global hidden_api_policy_pre_p_apps' exited with code 255'; Stderr: 'Exception occurred while executing 'delete':
 java.lang.SecurityException: Permission denial: writing to settings requires:android.permission.WRITE_SECURE_SETTINGS
 at com.android.providers.settings.SettingsProvider.enforceWritePermission(SettingsProvider.java:2561)
 at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1562)
 at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1554)
 at com.android.providers.settings.SettingsProvider.deleteGlobalSetting(SettingsProvider.java:1525)
 at com.android.providers.settings.SettingsProvider.call(SettingsProvider.java:568)
 at android.content.ContentProvider.call(ContentProvider.java:2548)
 at android.content.ContentProvider$Transport.call(ContentProvider.java:538)
 at com.android.providers.settings.SettingsService$MyShellCommand.deleteForUser(SettingsService.java:410)
 at com.android.providers.settings.SettingsService$MyShellCommand.onCommand(SettingsService.java:284)
 at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)
 at android.os.ShellCommand.exec(ShellCommand.java:38)
 at com.android.providers.settings.SettingsService.onShellCommand(SettingsService.java:51)
 at android.os.Binder.shellCommand(Binder.java:1073)
 at android.os.Binder.onTransact(Binder.java:901)
 at android.os.Binder.execTransactInternal(Binder.java:1331)
 at android.os.Binder.execTransact(Binder.java:1268)'; Code: '255'

附上 小豆包的回答(尝试了1&2 后面俩不懂|懒得搞,反正有奇奇怪怪的问题感觉可以换设备试试):


豆包:
根据错误信息,问题出在没有权限来执行 settings delete global hidden_api_policy_pre_p_apps ADB 命令。该命令尝试删除全局隐藏的 API 策略,但由于缺少android.permission.WRITE_SECURE_SETTINGS权限而被拒绝。
要解决此问题,你可以尝试以下步骤:
1.确保你的应用程序在 Manifest 文件中请求了android.permission.WRITE_SECURE_SETTINGS权限。你可以在Manifest 文件的<manifest>标签内部添加以下权限声明:
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
2.如果你的应用程序已经请求了该权限,请检查是否在运行时获得了用户的授权。在某些设备上,用户可能需要在设置中手动授予此权限。
3.如果你是以管理员身份或具有足够权限的用户身份运行 ADB 命令,请确保你的 ADB 命令行具有足够的权限来执行此操作。你可能需要使用 root 权限或在设备上启用相应的开发者选项。
4.如果以上方法都不奏效,可能是由于设备的安全设置或系统限制导致的。在某些情况下,无法直接通过 ADB 命令删除全局隐藏的 API 策略。
请注意,修改系统设置和权限可能会对设备的安全性和稳定性产生影响。在进行任何更改之前,请仔细考虑并了解可能的风险。如果你遇到其他问题或需要更多帮助,请提供更多的上下文和详细信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值