Appium如何开展小程序自动化测试?

在这里插入图片描述
现阶段,小程序越发的火,微信也给了巨量的流量诱惑。很多公司都有进行小程序开发。
那么小程序可以进行自动化测试吗? 当然是可以的!

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就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

猜你喜欢

转载自blog.csdn.net/software_test010/article/details/121206808