由于腾讯系QQ、微信是基于腾讯自研X5内核-类似webview,不是谷歌原生webview,所以调试会有些许差异(有很 多app厂商也开始采用X5内核)

微信小程序自动化测试只能够支持手机,模拟器是不行的

step1:手机打开开发者模式连接上电脑,打开微信小程序webview调试开关

在微信聊天窗口发送如下URL:

http://debugmm.qq.com/?forcex5=true

http://debugx5.qq.com

step2:UC开发者工具识别小程序的web元素信息

step3:确认微信小程序对应的进程名 -- com.tencent.mm:appbrand0

微信有很多的进程,我们要确定当前小程序是位于哪个进程中:

adb shell dumpsys activity top | ?ndstr ACTIVITY 查询前台运行的所有进程

找到AppBrandUI后面的pid

adb shell ps + pid得到进程名

注意

1、不清除微信数据

2、微信小程序自动化chromeDriver 一定得要用V2.40版本,版本匹配跟正常chrome~ChromeDriver不一样,比较特殊,在appium的chromdriver目录下替换2.40的chromedriver.exe文件

3、微信小程序可能会打开很多窗口,有些窗口是没有用的,所以要切换句柄

public classSmallProgramTeest {//driver定义成全局变量

publicAndroidDriver driver;

@BeforeTestpublic void setUp() throwsMalformedURLException {//创建一个配置对象,保存这四个配置

DesiredCapabilities capabilities = newDesiredCapabilities();//1、指定platformName--平台名

capabilities.setCapability("platformName","Android");//2、指定deviceName-设备名

capabilities.setCapability("deviceName","08e7c5997d2a");//3、指定appPackage --测试App标识

capabilities.setCapability("appPackage","com.tencent.mm");//4、指定appActivity --启动App的

capabilities.setCapability("appActivity","com.tencent.mm.ui.LauncherUI");//!!!不清除掉微信的数据

capabilities.setCapability("noReset",true);//让配置生效--要和Appium Server建立通讯连接,把这些配置传递给Appium服务 --驱动//两个参数:第一个参数:Appium通讯地址(包括IP地址+端口号) 第二个参数:配置对象//支持X5内核应用自动化配置

capabilities.setCapability("recreateChromeDriverSessions", true);//ChromeOptions使用来定制启动选项,因为在appium中切换context识别webview的时候,//由于小程序是在一个单独的进程中,所以需要加上androidProcess: com.tencent.mm:appbrand0

ChromeOptions options = newChromeOptions();//第二个参数要改成你查询到的小程序进程名--只需要改androidProcess对应的值-查询到的微信小程序的进程名

options.setExperimentalOption("androidProcess", "com.tencent.mm:appbrand0");

capabilities.setCapability(ChromeOptions.CAPABILITY, options);//初始化会默认将chrome浏览器打开,需要将Browser置为空

capabilities.setBrowserName("");

URL url= new URL("http://127.0.0.1:4723/wd/hub");//初始化动作,打开测试App

driver = newAndroidDriver(url,capabilities);//隐式等待

driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);

}

@Testpublic void testSmallProgram() throwsInterruptedException {//1、等待一会儿,等待微信主页加载完毕

Thread.sleep(20000);//2、向下滑动

swipeDown();//3、点击选择小程序

driver.findElementByAndroidUIAutomator("new UiSelector().text(\"微信app里定位到的小程序名\")").click();//4、等待小程序加载完毕

Thread.sleep(10000);//切换context -- 》 context名字:WEBVIEW_com.tencent.mm:appbrand0

driver.context("WEBVIEW_com.tencent.mm:appbrand0");//获取到微信小程序打开所有窗口的句柄(小程序可能会打开很多窗口,有些窗口是没有用的)

Set handlers =driver.getWindowHandles();//遍历所有的句柄,找到正确的窗口

for(String handle : handlers){//如果当前窗口的名字=想要的小程序窗口名

if(driver.getTitle().equals("想要的小程序窗口名")){//找到了对应的窗口,退出循环

break;

}else{//找到的窗口不符合,切换句柄,直到找到正确的为止

driver.switchTo().window(handle);

}

}//在正确的窗口里面去定位元素

driver.findElement(By.xpath("//a[contains(text(),‘课程‘)]")).click();//chromeDriver 一定得要用V2.40版本//版本匹配跟正常chrome~ChromeDriver不一样,比较特殊

}public voidswipeDown(){//由屏幕的宽和高来决定滑动的起始点和终止点

int width =driver.manage().window().getSize().getWidth();int height =driver.manage().window().getSize().getHeight();//向下滑动

TouchAction touchAction = newTouchAction(driver);//press:按压某一个坐标 moveTo:滑动到某一个点 release:手指的释放//滑动的起始点坐标

PointOption pointOption1 = PointOption.point(width/2,height/5);//滑动的终止点坐标

PointOption pointOption2 = PointOption.point(width/2,height*4/5);//waitAction方法需要传入waitOption类型的参数

Duration duration = Duration.ofMillis(300);

WaitOptions waitOptions=WaitOptions.waitOptions(duration);

touchAction.press(pointOption1).waitAction(waitOptions).moveTo(pointOption2).release().perform();

}

}

原文:https://www.cnblogs.com/erchun/p/13335723.html

android微信自动化脚本,appium——微信小程序自动化相关推荐

  1. 微信小程序自动化打包(taro+oss+ci+Jenkins+node+钉钉)

    在日常的小程序开发中不使用自动化可能会出现的一些问题: 分支切换,代码上传,预览码生成,操作无脑但耗时 当生成码的要求同时来的时候,需要等待 小程序单独的机制,导致无法像web端那样做整体流程管控 非 ...

  2. android微信小程序自动填表_微信小程序自动化,记录趟过的坑!

    项目思想:关键字+数据驱动混合测试 基于Android-微信小程序自动化的关键是:webview的切换 对于微信App来说如何从NATIVE切换到webview的过程 测试版本信息 1.微信版本:7. ...

  3. 微信上python小课 骗局_聊聊 Python 做微信小程序自动化,那些踩过的坑?

    1. 场景 之前写过 微信小程序的几种方式,对于有源码的小程序推荐使用微信开放的 SDK 来做自动化,否则只能使用原生或 WebView 的方式. 最近在用 Python + Appium 在微信小程 ...

  4. 微信小程序自动化框架minium实践,手把手带你玩minium

    一.背景需求 精选小程序发生了一次线上问题,测试阶段的小程序开发码测试ok,但是小程序正式码由于打包问题,"我的订单"页面文件打包失败,导致线上用户访问我的页面白屏. 当前并不能避 ...

  5. Windows10windows server 2012r2作为slave 用jenkins部署微信小程序自动化打包

    背景 微信小程序的测试发布在没有 CI/CD 等相关工具的情况下,存在着如下的问题: 小程序开发助手中,同一个开发者只能显示一个开发版本 测试同事.产品经理.UI设计师找开发要二维码,或者本地拉取代码 ...

  6. Airtest做微信小程序自动化(AirtestIDE)

    测试产品中有一部分是微信小程序上的功能,现在想把这部分实现自动化,于是开始研究微信小程序如何实现自动化,最多的是appium和Airtest.下面介绍Airtest如何实现小程序自动化(选airtes ...

  7. 微信小程序自动化之miniprogram-automator快速上手

    新近项目组大佬要求学习使用这个小程序自动化测试miniprogram-automator,但本小白从未接触使用过相关测试类任务,鉴于网上能查找到的相关资料也较为稀少,故在此提记我在使用过程的具体使用过 ...

  8. 打通微信小程序自动化部署最后一步-微信第三方平台

    之前在公司搭建了一个前端部署平台(cb-cycle),涉及小程序.网页应用的部署.(流程节点可自定义开发,原则上任意程序都可以实现部署,甚至不至于部署). 无奈小程序自动化只能到上传代码(minipr ...

  9. android微信小程序支持横屏,微信最新内测版本:小程序支持横屏使用!

    原标题:微信最新内测版本:小程序支持横屏使用! 打开百度搜索小程序横屏,你会看到满屏的网友提问是否能横屏?怎么操作能横屏? 当然不能. 不过,在8月30日,微信微信团队对外发布了iOS微信最新众测版本 ...

最新文章

  1. mysql ldap_OpenLDAP 使用MySQL作为数据库
  2. linux 内核 发送数据,linux 内核tcp数据发送的实现
  3. Flume NG之Agent部署和sink配置HDFS且吐槽CSDN博客及客服态度
  4. 概率论-2.6 随机变量函数的分布
  5. 素数与线性筛选法初级版
  6. php function 输出,PHP中常用的输出函数总结
  7. python爬虫源码_Python—爬虫:王者荣耀全套皮肤【附源码】
  8. iOS - LocalCache 本地数据缓存
  9. Java零基础并发编程入门
  10. 跟踪 linux 内核调用_Linux用户和内核空间中的动态跟踪
  11. 富文本转换字符串 php,php 如何将一个富文本字符串生成word文档?
  12. socket编程之回声服务器
  13. NOIP2012pj文化之旅[floyd]
  14. Python 利用字典实现类似 java switch case 功能
  15. 科研——谷歌学术使用方法
  16. [WPF]图片裁切功能(鼠标绘制)
  17. 嵌入式开发——基于小熊派的智慧农业案例(一)
  18. 没想到吧?快手竟然给厕所上安装了计时器,或许职场从此再无「带薪拉屎」...
  19. VMware虚拟机装windows xp系统
  20. css字体样式渐变导致360浏览器vue兼容性问题

热门文章

  1. 【表达】Logic Thinking
  2. 第四次机考(2019)E. 教学质量评估
  3. 如何免费在线把Figma转成Sketch
  4. 20年内人工智能将带来什么惊喜?
  5. Haproxy(三)详细记录 2018年01月05日 16:47:36
  6. 怎样编写裸片启动程序-ARMv8的Boot Code和ROM程序
  7. navicat premium 12+ Mac 3分钟 破解方案
  8. 单元测试(哈酷酷么塔塔)
  9. mysql查询的长度限制_SQL查询的长度的实际限制(特别是MySQL)
  10. TNS:协议适配器错误