python+appium搭建android端微信小程序UI自动化测试环境

python+appium搭建android端微信小程序UI自动化测试环境

2023年6月30日发(作者:)

python+appium搭建android端微信⼩程序UI⾃动化测试环境注:以下是mac的安装⼀、appium环境搭建安卓端UI⾃动化需要依赖于adb命令,⽽adb命令属于android sdk的⼯具,⽽android sdk ⼜依赖于jdk,所以先安装jdk再安装android sdk。1.安装JDK(1.8) mac版本:官⽹下载地址:/java/technologies/javase/现在下载jdk需要oracle账号登录,没有账号的可以直接从⽹盘链接直接取:/s/1b9uoG3MiIFJtW05vo02fvQ 提取码:ejg6下载完成后得到的是⼀个dmg的安装包直接点击dmg安装包,按照系统提⽰直接安装即可。安装完后找到jdk的安装⽬录,可以通过命令在终端 which java 找到安装路径复制。在终端打开 "open .bash_profile"⽂件,在⽂件末尾添加上下⾯这段语句export java="刚才复制的JDK安装路径"最后终端输⼊source ~/.bash_profile回车即可⽣效。添加完成在终端输⼊ "java -version" 能看到java版本即代表配置⽣效,jdk安装完成

2.下载android的SDK:⽬前官⽹已经没有单独的sdk包下载,如果从官⽹下载的话是下载包含android sdk的android studio,⽽我们在使⽤appium时主要⽤的只是android的sdk,为了⽅便就不从官⽹下载,从另外⼀个链接单独下载sdk。下载地址:/打开链接后,点击Android SDK ⼯具

选择SDK Tools

再选择系统对应的版本下载即可。

下载完成后解压,打开⽂件找到tools⽬录下的android双击。

打开了Android SDK Manager。再勾选对应⼯具包点击下载。

下载完成后打开 open .bash_profile⽂件 然后在末尾输⼊export ANDROID_HOME=/Users/cody/App/android-sdk-macosxexport PATH=${PATH}:${ANDROID_HOME}/platform-toolsexport PATH=${PATH}:${ANDROID_HOME}/toolsexport PATH=${PATH}:${ANDROID_HOME}/build-tools/28.0.3注:第⼀⾏后⾯的路径指的是sdk的本地路径第四⾏后⾯28.03指的是android sdk⽂件下build-tools⽬录下下载的版本。配置完成后保存后在终端输⼊source ~/.bash_profile最后在终端输⼊ adb -version 能看到adb版本即代表配置⽣效,adb安装完成。

3.安装。appium依赖于。下载地址:/zh-cn/下载完成后得到dmg包,直接双击点击安装即可。安装完成后在终端输⼊ "node -v" 查看到版本号即代表安装完成。

4.安装appium desktop(appium server + appium inspector⼯具)下载地址:/appium/appium-desktop/releases选择系统对应的版本下载完成后直接安装即可。如果不需要inspector⼯具的话 可以通过npm命令安装命令版在终端输⼊"nmp install -g appium" 。nmp可以理解为的包管理器,类似于python的pip2021-07-17如果下载慢的话可以换为国内的镜像源例如淘宝:"npm install -g cnpm --registry=""cnpm install -g appium"

5.安装appium client通过pip命令安装,在终端输⼊"pip install appium-python-client" 6.安装appium-doctor检测appium的安装环境在终端输⼊"cnmp install appium-doctor"在终端输⼊appium-doctor通过执⾏结果查看运⾏是否有错误。注:现在的appium不需要再单独安装appium-doctor 直接安装appium desktop即可。

以上便是appium的环境搭建。下⾯就来检验⼀下环境是否搭建成功。1.启动appium desktop,点击编辑配置查看ANDROID_HOME及JAVA_HOME路径是否正确,正确的话点击启动服务。2.准备⼀个android设备,真机或模拟器。链接上电脑并通过adb devices查看设备是否链接成功。3.编写脚测试。from appium import webdriverdesired_caps={ "automationName":"UiAutomator2", "platformName":"Android",

#移动系统操作平台名称 "platformVersion":"7.1.2",

#系统版本 "deviceName":"UYT5T",

#使⽤的移动设备或模拟器 需要在cmd命令下 敲adb devices查看 "appPackage":"ng",

#app包名 aapt dump badging apk路径(路径和apk安装包不能包含中⽂),查看package:name= "appActivity":"Activity",

#所要测试app的⼊⼝页⾯,获取命令:aapt dump badging apk路径,查看launchable-activity: name=' "noReset":True,

#在此会话之前,请勿重置应⽤程序状态}driver=('127.0.0.1:4723/wd/hub',desired_caps) 脚本执⾏完成,appium ⽇志没有报错表⽰搭建成功了。⼆、实现⼩程序ui⾃动化appium实现微信⼩程序UI⾃动化关键的地⽅在于webview的切换。由于微信的使⽤的是浏览器内核为⾃研x5内核,⾮Google原⽣的webview。需要开启TBS内核Inspector调试功能,chorme-devtools才能拿到⼩程序页⾯。步骤:1.在微信聊天窗⼝页⾯发送链接:,打开链接后点击"信息",勾选是否打开TBS内核Inspector调试功能。(不要使⽤模拟器,模拟器⽆法开启x5内核调试)d设备与电脑链接,通过adb devices 检测确认已链接。3.在chrome浏览器打开链接:chrome://inspect/#devices,再打开微信,这时已打开的chrome://inspect/#devices链接页⾯刷新后会显⽰webview的版本号以及⼩程序H5的页⾯点击inspect即可拿页⾯(chrome-devtools需要梯⼦才能使⽤,没有的话可以使⽤uc-devtools)

4.下载对应chromedriver对应版本,下载链接:/mirrors/chromedriver/-desktop的chromedriver版本与⼿机上的不⼀致需要修改。修改⽅式有多种:启动appium-desktop后指定chromedriver路径。点击⾼级设置将下载好的chromedriver路径放到chromedriver选项⾥⾯

找到本地appium-desktop的安装路径找到chromedriver将其替换为版本对应的。通过绝对路径指定驱动⽂件。在appium启动参数加上"chromedriverExecutable":"的路径"6.在appium启动参数指定android进程。⾸先需要找到当前⼩程序的进程在终端输⼊"adb shell dumpsys activity top | grep ACTIVITY"(⼿机上只保留⼩程序活动,其他的都杀掉,不然进程太多了)

拿到进程id后 终端输⼊"adb shell ps 32324" 拿到进程名

拿到进程名后":appbrand0"在启动参数加上'chromeOptions': { 'androidProcess': ':appbrand0'} desired_caps = { "automationName": "UiAutomator2", "platformName": "Android",

"platformVersion": "10",

"deviceName": "UYT5T",

"appPackage": "",

"appActivity": ".erUI",

"noReset": True,

"fullReset": False, 'chromeOptions': { 'androidProcess': ':appbrand0' } }执⾏看看~可以输出页⾯源码就可以~ ~from appium import webdriverdesired_caps={ "automationName":"UiAutomator2", "platformName":"Android",

"platformVersion":"10",

"deviceName":"UYT5T",

"appPackage":"",

"appActivity":".erUI",

"noReset":True,

"fullReset":False, 'newCommandTimeout':600, 'chromeOptions': { 'androidProcess': ':appbrand0' }}driver = ('0.0.0.0:4723/wd/hub', desired_caps)itly_wait(25)#_element_by_android_uiautomator('new UiSelector().text("发现")').click()_element_by_android_uiautomator('new UiSelector().text("⼩程序")').click()_element_by_android_uiautomator('new UiSelector().text("⼩程序名称")').click()(5)_t('WEBVIEW_:appbrand0')(5)print(_source)

最后⼀个注意事项:在两个H5页⾯切换时,打印第⼆个页⾯的page_source时输出的是第⼀个页⾯的page_source。解决⽅案:先切回 NATIVE_APP 再杀掉chromedriver进程 在切⼊webview

_t("NATIVE_APP")('pkill -f "chromedriver 2"')(3)_t('WEBVIEW_:appbrand0')  

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688091767a79612.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信