app自动化测试(九) appium 微信小程序 自动化测试

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

准备阶段

三个inspect工具可选(在APP的H5页面测试中也有提及)

  1. chrome DevTools chrome://inspect/#devices

  2. UC DevTools https://dev.ucweb.com/download/?spm=ucplus.11199946.c-header.6.53974692oQhbSQ

  3. TBS Studio (腾讯自家的小程序调试工具)https://x5.tencent.com/tbs/guide/debug/download.html

其实不管是腾讯家的调试工具还是UC家的调试工具,都是对chrome devtools的二次封装
使用上大同小异,以上三个工具选择一个即可,具体使用方式腾讯家很友好的整理了相关的文档
https://x5.tencent.com/tbs/document/debug-detail-wifi.html

开启小程序debug模式

腾讯的浏览器driver是独家定制X5内核。
发现腾讯家也有很详细的文章 就直接搬链接过来了
https://x5.tencent.com/tbs/guide/debug/season7.html

设计初始化环境的步骤

  1. 配置desired_capabilities(X5内核不能用chromedriver)
# 相比之前的启动参数,小程序的启动参数需要多几项
"chromedriverExecutable": chromedriverfilepath, "recreateChromeDriverSessions": True, "chromeOptions": {"androidProcess": "com.tencent.mm:appbrand0"}
# chromedriverfilepath的版本需要用在inspect中看到的版本
# recreateChromeDriverSessions 用于自动化配置X5内核驱动
# chromeOptions 提前指定小程序webview的context
  1. 打开微信
# 微信的apppackage appActivity
{"appPackage": "com.tencent.mm", "appActivity": "com.tencent.mm.ui.LauncherUI"}
  1. 进入小程序
  • 所有想要进入小程序debug状态的都要从 搜一搜这个入口进去
    有部分人的微信在定位的过程中是无法精确定位到具体元素的,此时我们推荐采用 xpath进行定位
    有部分人的微信是可以定位到具体元素的可以使用任意方式


    image.png
  • 进入到搜一搜页面,搜索框是无法进行精确定位的,但是可以xpath定位"搜索"这两个字


    image.png

    在此只能使用XPATH进行定位

  • tips:此搜索框必须先进行点击,再输入文字。否则将有bug
  • 进入到搜索页,此处一样有些人可以精确定位,有些不可以


    image.png
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()
  1. 找到小程序运行的context
  1. 如图我们使用第一个命令可以得到手机当前app正在活跃的进程
  2. 找到带有plugin字样的pid
  3. 拿去该pid执行第二个命令即可得到该pid进程的name了
  4. 一般name名为:com.tencent.mm:appbrand0 \ com.tencent.mm:tools \ com.tencent.mm:toolsmp的才是小程序的
image.png
adb shell dumpsys activity top| findstr ACTIVITY
adb shell ps pid
  1. 切换进该context
context = driver.contexts  # 此时会有两个webview的context
driver.switch_to.context(context[-1]) # 选取最后一个context进行切换
# ['NATIVE_APP', 'WEBVIEW_com.tencent.mm:tools']
  1. 因为小程序的特性,每个页面都是单独的handle,所以需要我们进行切换
handle = driver.window_handles  # 获取当前页面全部的句柄
for i in handle:  # 对全部句柄进行遍历
    driver.switch_to.window(i)  # 切到到每一个句柄上
    if keyword in driver.page_source:  # 当某个句柄里面有我们要的关键字时就跳出遍历
        break
  1. 进行相关用例测试
  • 此处的操作即可参考我们这个系列里面H5页面的操作拉
  • 不过现在新版本的同学可能可以看到,H5页面也不再是webview这个class了,已经可以进行精确定位了


    image.png

参考以下:
https://mp.weixin.qq.com/s/U0jFiRsVsChHb8K9995QKQ

https://www.cnblogs.com/yyoba/p/9455519.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,616评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,020评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,078评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,040评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,154评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,265评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,298评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,072评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,491评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,795评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,970评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,654评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,272评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,985评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,815评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,852评论 2 351

推荐阅读更多精彩内容

  • XTEST:https://www.cnblogs.com/Test-xiaobai/p/9066331.html...
    leyu阅读 6,748评论 0 10
  • 目 录: 1. 小程序自动化方案 目前小程序自动化主要有以下三种方案: Appium框架【官网】:http://a...
    leyu阅读 10,531评论 4 19
  • 最基础的使用方法 最简单的布局: 在Activity中使用WebView: 但只是这样的话,在模拟器上是会直接调到...
    HolenZhou阅读 7,796评论 12 33
  • 杏花树下酒 文/阿雪 水槛说:“真不想走出这杏花林,自由自在,多快...
    屏鸟阅读 712评论 11 9
  • 曾经以为父母都是满目世俗的大人,理想跟爱,是他们空乏人生里早已看破的念想,却忘了他们也是曾经的少年,背弃理想,肩负...
    蕤_阅读 171评论 0 1