【appium+poco+airtest+python】微信内置浏览器h5与小程序的自动化测试

H5自动化

一、环境安装

1.安装安卓sdk
2.安装appium
3.安装airtest ide
4.安装python3.7(3.7版本敲重点,后面会解释)

二、实现思路

就我个人的经验而言,做自动化就两方面。一个是元素定位,一个是操作元素。那么首先要进行对于h5页面的定位,只要定位到元素了,操作元素就是c+v了。

三、h5元素定位

1.adb连接手机/模拟器,具体连接步骤不做描述
2.打开微信,在文件传输助手中输入网址并进入
http://debugtbs.qq.com
如果这个页面打不开就先打开这个链接
http://debugxweb.qq.com/?inspector=true
打开后如图:
勾选TBSInspector调试选项,即可获取h5页面的元素
在这里插入图片描述

3.打开谷歌浏览器进入网址chrome://inspect#devices
此时记得保证手机内打开被测网页,点击对应网页链接下方的inspect进入调试页面
坑:理论上说,会出现404页面,因为这里需要FQ下载组件。
解决方案:
1.使用软件FQ
2.使用离线包,我用的是https://www.cnblogs.com/slmk/p/9832081.html在这里购买的离线包,亲测能用,购买价格18,各位按需取舍。(如果卖家看到能不能包我个无限量更新)
在这里插入图片描述
进入之后就可以定位了,跟浏览器F12定位一样,就不过多描述。

四、操作元素/书写自动化脚本

1.打开ide新建python文件,安装appium库。各个ide安装方式不同,这里不多描述。本人使用的是vscode
2.appium头部配置

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '7' #安卓版本
desired_caps['deviceName'] = 'xxx' #设备名adb devices后能获取到
desired_caps['appPackage'] = 'com.tencent.mm' #微信包名
desired_caps['appActivity'] = '.ui.LauncherUI' #微信首页
desired_caps['noReset'] = 'True' #保持多用例执行的用户状态
desired_caps['chromeOptions'] = {'androidProcess': 'com.tencent.mm:toolsmp'} #h5页面活动窗口
desired_caps['chromedriverExecutable'] = 'D://tools//chromedriver//89//chromedriver.exe' #浏览器驱动
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

重点:
(1).‘androidProcess’: 'com.tencent.mm:toolsmp’这里设置的是微信h5窗口的进程,不固定,依微信版本而定,后面有获取窗口名的方法,可根据实际情况更换
(2).‘chromedriverExecutable’这里的驱动版本必须与微信内置浏览器驱动版本一样。查看微信内置浏览器驱动版本方式:在文件传输助手中输入并打开https://liulanmi.com/labs/core.html

3.进入被测网页与切换当前活动窗口

wait=WebDriverWait(driver, 20)
# 打开微信需要一定时间,这里我们用显示等待
el1 = wait.until(EC.presence_of_element_located((By.XPATH, "//android.view.View[@text='文件传输助手']")))
el1.click() # 进入文件传输助手
el2 = wait.until(EC.presence_of_element_located((By.XPATH, "//*[@text='你想进入的页面,需在文件传输助手里发送']")))
el2.click() # 进入网页
sleep(10)
print(driver.contexts)
driver.switch_to.context("WEBVIEW_com.tencent.mm:toolsmp")
print ("切换成功")

这里的print(driver.contexts)获取了所有的活动页面,根据不同进行修改。执行完后,如果出现“切换成功”说明大功告成

之后各位就像用selenium操作web一样操作就可以了。

五、补充:牵扯到第三方页面的操作

这里是很常见但是却不好解决的地方,我之前在网上找半天也找不到相关的内容,后来发现了airtest的poco定位,然后尝试将appium与airtest框架结合起来,发现成功了,这里给大家介绍一下

这里我采用的操作是用airtest里的poco定位进行操作,所以就需要appium框架与airtest整合。
整合方法:
1.先对airtest进行配置
(1)pip install airtest-selenium
(2)打开airtest ide-选项-设置:在自定义python.exe路径中,选择自己的python路径。由于airtest只支持到python3.8版本,所以不能使用最新的python3.10。
(3)重点:由于airtest ide自带环境,所以想用appium库的时候需要自己选择自己的python,但是还有个隐藏的东西要注意。adb也是自带的,这样由于appium使用的是你sdk的adb,而airtest使用的是自带的adb,这样就会导致连接设备冲突,所以我们还要对adb进行操作。
这里我采用的方法是对两个adb进行软连接。
通过管理员权限打开cmd

cd D:\tools\android-sdk-windows\platform-tools
mklink /d "D:\软件\AirtestIDE\airtest\core\android\static\adb\windows\adb" "./adb.exe"

前者是airtest的adb.exe所在路径,后者是当前路径(sdk的)adb.exe

2.经过这些配置,我们的airtest ide里就可以执行appium框架的代码了
在airtest ide中新建.air文件

__author__ = "啥也不会东学西学的自动化测试实习生"
from airtest.core.api import *
auto_setup(__file__)

在头部配置后粘贴你的appium代码,保证这段代码执行后会跳转到第三方页面,如支付
之后在代码后面使用poco的录制功能直到支付结算完毕,重新回到h5页面,再继续补充后续代码即可

到此,h5的自动化脚本书写全部完成。

关于小程序,因为微信官方已经关掉了小程序调试工具,所以现在已经无法从外部获取到小程序的元素了,故小程序无法按照上述操作进行,微信官方推荐使用的是minium框架,这个框架后面会写使用方法。本篇完结~

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值