概述
现阶段,小程序越发的火,微信也给了巨量的流量诱惑。很多公司都有进行小程序开发。
那么小程序可以进行自动化测试吗? 当然是可以的!
01 准备阶段
三个inspect工具可选:
chrome DevTools
chrome://inspect/#devices
UC DevTools
https://dev.ucweb.com/download/?spm=ucplus.11199946.c-header.6.53974692oQhbSQ
TBS Studio (腾讯自家的小程序调试工具)
https://x5.tencent.com/tbs/guide/debug/download.html
其实不管是腾讯家的调试工具还是UC家的调试工具,都是对chrome devtools的二次封装使用上大同小异,以上三个工具选择一个即可,具体使用方式腾讯家很友好的整理了相关的文档:
https://x5.tencent.com/tbs/document/debug-detail-wifi.html
02 开启小程序debug模式
腾讯的浏览器driver是独家定制X5内核。发现腾讯家也有很详细的文章 就直接搬链接过来了:
https://x5.tencent.com/tbs/guide/debug/season7.html
使用步骤:
1.使用微信打开http://debugtbs.qq.com/,点击“查看内核版本”,显示:”内核版本信息:43xxx”,如果版本号小于439xx则需要执行下一步升级内核。
2.打开http://debugtbs.qq.com/,点击“安装线上TBS内核”。重启微信, 检查内核版本号。
3.打开http://debugx5.qq.com/,选中“信息”->“打开x5jscore inspector ”复选框。重启微信。
4.打开微信,“发现”-》小程序,选中仍一小程序,如“京东”
5.在TBS Studio中启动调试,可以看到如下界面:
03 设置初始化环境
1、配置desired_capabilities(X5内核不能用chromedriver)
# 相比之前的启动参数,小程序的启动参数需要多几项
"chromedriverExecutable": chromedriverfilepath, "recreateChromeDriverSessions": True, "chromeOptions": {"androidProcess": "com.tencent.mm:appbrand0"}
# chromedriverfilepath的版本需要用在inspect中看到的版本
# recreateChromeDriverSessions 用于自动化配置X5内核驱动
# chromeOptions 提前指定小程序webview的context
2、打开微信
# 微信的apppackage appActivity
{"appPackage": "com.tencent.mm", "appActivity": "com.tencent.mm.ui.LauncherUI"}
3、进入小程序
所有想要进入小程序debug状态的都要从 搜一搜 这个入口进去;
有部分人的微信在定位的过程中是无法精确定位到具体元素的,此时我们推荐采用 xpath进行定位;
有部分人的微信是可以定位到具体元素的可以使用任意方式
进入到搜一搜页面,搜索框是无法进行精确定位的,但是可以
xpath定位"搜索"这两个字
在此只能使用XPATH进行定位
tips:此搜索框必须先进行点击,再输入文字。否则将有bug
进入到搜索页,此处一样有些人可以精确定位,有些不可以
caps = {"appPackage": "com.tencent.mm", "appActivity": "com.tencent.mm.ui.LauncherUI", "chromedriverExecutable": file,
"recreateChromeDriverSessions": True, "chromeOptions": {"androidProcess": "com.tencent.mm:appbrand0"}}
driver = startup_param(**caps)
wait = WebDriverWait(driver, 20)
loc = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("发现")')
wait.until(EC.visibility_of_element_located(loc))
driver.find_element(*loc).click()
loc = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("搜一搜")')
wait.until(EC.visibility_of_element_located(loc))
driver.find_element(*loc).click()
loc = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("微信热点")')
wait.until(EC.visibility_of_element_located(loc))
loc = (MobileBy.XPATH, "//*[@text='搜索']")
ele = driver.find_element(*loc)
ele.click()
ele.send_keys("京东")
loc = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("京东")')
wait.until(EC.visibility_of_element_located(loc))
driver.find_element(*loc).click()
loc = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("电商平台")')
wait.until(EC.visibility_of_element_located(loc))
driver.find_element(*loc).click()
4、找到小程序运行的context
如图我们使用第一个命令可以得到手机当前app正在活跃的进程
找到带有plugin字样的pid
拿去该pid执行第二个命令即可得到该pid进程的name了
一般name名为:com.tencent.mm:appbrand0 com.tencent.mm:tools com.tencent.mm:toolsmp的才是小程序的
adb shell dumpsys activity top| findstr ACTIVITY
adb shell ps pid
5、切换进该context
context = driver.contexts # 此时会有两个webview的context
driver.switch_to.context(context[-1]) # 选取最后一个context进行切换
# ['NATIVE_APP', 'WEBVIEW_com.tencent.mm:tools']
6、因为小程序的特性,每个页面都是单独的handle,所以需要我们进行切换
handle = driver.window_handles # 获取当前页面全部的句柄
for i in handle: # 对全部句柄进行遍历
driver.switch_to.window(i) # 切到到每一个句柄上
if keyword in driver.page_source: # 当某个句柄里面有我们要的关键字时就跳出遍历
break
7、进行相关用例测试
此处的操作即可参考我们这个系列里面H5页面的操作啦
不过现在新版本的同学可能可以看到,H5页面也不再是webview这个class了,已经可以进行精确定位了
下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
最后: 可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)
喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!
好文推荐
转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!
面试经:一线城市搬砖!又面软件测试岗,5000就知足了…
面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…
什么样的人适合从事软件测试工作?
那个准点下班的人,比我先升职了…
测试岗反复跳槽,跳着跳着就跳没了…
最后
以上就是时尚黄蜂为你收集整理的Appium如何开展小程序自动化测试?的全部内容,希望文章能够帮你解决Appium如何开展小程序自动化测试?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复