前言:网上不知道是我没找到还是怎么回事,关于客户端自动化的文章比web自动化的文章少很多,且客户端自动化出现的问题大多数文章都无法解决,下面就是我实现成功打开客户端app的一些问题的解决办法,都没有问题截图,是成功跑起来之后的总结。
我的设备:mac(windows的话也可以参考,基本都差不多)
文章目录
关于安装和配置python,appium server GUI,android studio的一些问题
python:主要就是编写操作命令的代码
appium server GUI:这里我安装的是appium server GUI,图形界面对于新手比较友好
android studio:主要就是模拟器,模拟客户端,这样一台电脑就可以了
1、appium server GUI配置Configurations
打开程序,点击下面的Edit Configurations,在对应的地方填写文件的路径
这里的java_home如,可以填写下面的路径,对应的jdk文件名换成自己的(我这是默认的安装路径)
/Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home
如果还是报java_home错误的话,那么就要配置一下java_home,widows好配,主要就是mac,下面是mac的java_home配置的方法
打开终端,输入java -version查看你的java版本
输入:java -version
输出:java version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode)
然后输入,输入which java,查看java指定命令的路径路径
输入:which java
输出:/usr/bin/java
然后配置java_home文件
输入:vim .bash_profile
接着编辑文件,输入:
export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=$JAVA_HOME/bin:$PATH
export CLASS_PATH=$JAVA_HOME/lib
然后使修改的文件生效:source .bash_profile
上面的都操作完成之后,关于java_home的报错应该就会消失了,注意,我的java安装路径都是默认的
2、android studio安装不了app问题
这个我运行的时候下载了这个配置,但是不知道由于什么原因找不到,自定义选择也不行,然后我就自己把platform-tools文件放在了一个位置,然后自定义选择就行
找到你的platform-tools文件,通过下面的方法找到你的文件路径,我的mac从这里能打开,但是从访达里面去寻找的时候找不到,也没找到解决办法,然后就复制了一份文件放在了一个位置,如果能从访达找到,那么就不用复制一份了,最后记住你放的位置
然后点击模拟器旁边菜单栏的三个点,打开该页面,关闭use detected ADB location按钮,然后选择刚刚的platform-tools文件里面的adb的文件路径
最后你再安装app就可以了
3、找不到apksigner.jar问题
这个需要你去下载这个文件,然后放在报错找不到这个文件的地方,然后就不会报错了,我是放在了platform-tools文件下就正常了
百度网盘下载地址: 链接:
https://pan.baidu.com/s/1iWafeX63gSrQgYNf_HCHRA
提取码: i5fd
4、获取包名appPackage,app启动名appActivity的方法
首先你可以打开android studio的logcat,然后点击需要获取的app,查看日志就可以了
包名appPackage
方法一:打开logcat,然后点击需要获取的app,搜索关键字,然后前面的基本就是你的包名
方法二:
打开终端,输入:
adb shell pm list package出所有的应用的包名 (-s:列出系统应用 -3:列出第三方应用 -f:列出应用包名及对应的apk名及存放位置 -i:列出应用包名及其安装来源)
adb shell pm list package
下面输出的就是你所有的包名,比如我的
app启动名appActivity
方法一:直接从android studio获取,点击app,查看logcat,然后搜索包名,查看第一条信息日志,/后面的就是app启动名appActivity了
方法二:
终端输入:adb shell
然后输入:dumpsys package com.whatsegg.egarage
下面就是对应的app启动名appActivity
5、运行代码
下面是对应的基本代码,我也是刚成功跑起来;其中的driverName我不注释运行的时候会有一个提示,我注释了也还是能运行,这里我也不清楚什么原因,后面了解了再来解释
from appium import webdriver
server = 'http://localhost:4723/wd/hub' # Appium Server, 端口默认为4723
desired_capabilities = {
'platformName': 'Android', # 平台
# 'driverName': 'Emulator Pixel_5_API_29', # 手机型号
'platformVersion': '10', # 安卓版本
'appPackage': 'com.whatsegg.egarage', # APP包名
'appActivity': '.activity.SplashActivity', # APP启动名
"noReset": "true",
'unicodeKeyboard': True, # 这句和下面那句是避免中文问题的
'resetKeyboard': True,
'automationName': 'UiAutomator2'
}
driver = webdriver.Remote(server, desired_capabilities) # 连接手机和APP
# 获取APP的包名
print(driver.current_package)
# 获取APP的启动名
print(driver.current_activity)
# 退出driver
driver.quit()
- appium server GUI 打开点击首页的start server按钮启动服务
- android studio打开模拟器,安装对应的app
- python输入上面的代码,然后运行
运行成功截图:
小结:上面就是我在进行app自动化的时候遇见问题中浪费了大量时间的问题,在这里分享给大家,避免踩同样的坑。
更多内容
如果需要了解一些别的关于测试的知识,可以访问http://heitree.xyz/看看,也许有你需要的,感谢阅读