网站更新内容:请访问: https://bigdata.ministep.cn/

Python+Appium实现APP自动化测试

一、环境准备

1.脚本语言:Python3.x IDE:安装Pycharm

2.安装Java JDK 、Android SDK

3.adb环境,path添加E:\Software\Android_SDK\platform-tools

4.安装Appium for windows,官网地址 

 

点击下载按钮会到GitHub的下载页面,选择对应平台下载

 

 

安装完成后,启动Appium,host和port默认的即可,然后设置Android SDk和Java JDK

 

 

 

 

然后点下边那个保存并重启的按钮,然后点第一个Start Server按钮,将会看到

 

 

二、真机测试

1.连接手机

打开开发者模式,USB线连接手机和电脑,并且在开发者选项当中,开启USB调试

 

 

测试是否连接成功,可执行命令adb devices

 

 

出现上图就证明手机和电脑连接成功。。。

2.点击Start Inspector Session,

 

 

按如下配置Desired Capabilities

 

 

platformName :声明是ios还是Android系统

platformVersion : Android内核版本号,可通过命令adb shell getprop ro.build.version.release查看

 

 

deviceName :连接的设备名称,通过命令adb devices -l中model查看

 

 

appPackage :apk的包名

appActivity:apk的launcherActivity,通过命令adb shell dumpsys activity | findstr “mResume”查看(需先打开手机应用)

 

 

注意:Android 8.1之前应使用adb shell dumpsys activity | findstr “mFocus”

3.运行Start Session,选择元素

 

 

右侧 Selected Element 区域有三个按钮

  • Tap:执行选中元素的点击事件
  • Send Keys:为文本框等对象传值
  • 如果是文本输入元素,就清除文本

4.录制脚本

 

 

录制生成的python代码如下:

# This sample code uses the Appium python client
# pip install Appium-Python-Client
# Then you can paste this into a file and simply run with Python

from appium import webdriver

caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "9.0.0"
caps["deviceName"] = "Mi_Note_3"
caps["appPackage"] = "com.antfortune.wealth"
caps["appActivity"] = "com.alipay.mobile.quinox.LauncherActivity"
caps["resetKeyboard"] = True
caps["unicodeKeyboard"] = True

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

el1 = driver.find_element_by_id("com.antfortune.wealth.login:id/login_main_button")
el1.click()
el2 = driver.find_element_by_id("com.alipay.mobile.accountauthbiz:id/auth_login_btn")
el2.click()

driver.quit()

5.在pycharm中建立项目将代码粘入,在运行之前,还需通过pip命令安装pip install Appium-Python-Client依赖包

 

 

最后,记一个我在这些过程中遇到的问题(现已解决)

在Appium-desktop中运行Start Session时,出现

 

 

解决方法:在开发者模式下,打开usb调试功能和use模拟点击,两个都要打开,此时再重新运行,即可解决

 

 

其他参考:

[Python+Appium实现APP自动化测试 - 知乎](https://zhuanlan.zhihu.com/p/115825045)

[(5条消息) Appium连接真机报错“You must include a platformName capability”_mz1997的博客-CSDN博客](https://blog.csdn.net/mz1997/article/details/115939732)

[appium 连接真机出现this adb server's $ADB_VENDOR_KEYS is not set - Eliphaz - 博客园](https://www.cnblogs.com/Eliphaz/p/13536231.html)

[appium启动start session报错记录Error executing adbExec - 程序员大本营](https://www.pianshen.com/article/63371639891/)

 

 

appium 连接真机出现this adb server's $ADB_VENDOR_KEYS is not set

 

1.检查是否经过授权:(如下是未授权的)

2.撤销手机上的USB调试

如果该设备显示为未授权,请转到手机上的开发人员选项,然后单击“撤销USB调试授权”(已通过JellyBean和Samsung GalaxyIII测试)。

然后重启adb服务器

adb kill-server
adb start-server

4.重新连接设备

设备将询问您是否同意连接计算机ID。您需要确认。

5.现在检查设备

现在已授权!

 

 

appium启动start session报错记录Error executing adbExec

报错如下:

然后我百度了多种结果,归总一下大家的解决方式

An unknown server-side error occurred while processing the command. Original error:Error executing adbExec

 

第一种解决方式:检查是否开启开发人员选项,打开允许usb调试

 

第二种解决方法:

链接:https://www.cnblogs.com/wxh04/p/7978164.html

删除手机上的影响app,或者重启手机

 

第三种解决方法:手机保持不息屏,然后点击start session后看手机状态,提示安装appium setting,初次使用是这样,然后弹安装什么安装什么

参考链接:https://blog.csdn.net/ak739105231/article/details/89085341

 

第四种解决方法:检查配置的参数是否正确,platformName,platformVersion,deviceName,appPackage,appActivity等

填写错误也是会报错的

参考链接:https://www.cnblogs.com/HuangXiaoJuan/p/9687951.html

 

第五种解决方法:检查你的sdk的版本一定要兼容你的手机型号

参考链接:https://blog.csdn.net/ModestLearners/article/details/106081053

 

暂时看到的大部分相关问题是这样的,记录一下

 

然后记录下,appium的配置Desired Capabilities,获取adb相关参数语句

这个界面的

platformName :声明是ios还是Android系统

platformVersion: Android内核版本号,可通过命令adb shell getprop ro.build.version.release查看

deviceName :连接的设备名称,通过命令adb devices -l中model查看

appPackage:apk的包名

appActivity:apk的launcherActivity,通过命令adb shell dumpsys activity | findstr “mResume”查看(需先打开手机应用)

注意:Android 8.1之前应使用adb shell dumpsys activity | findstr “mFocus”

命令执行参考链接:https://baijiahao.baidu.com/s?id=1662021502495073716&wfr=spider&for=pc

posted @ 2021-07-31 11:39  ministep88  阅读(1826)  评论(0编辑  收藏  举报
网站更新内容:请访问:https://bigdata.ministep.cn/