1、打开微信在任意窗口输入一下内容

针对微信版本在7.0以下,可以只需要在任意聊天窗口输入debugx5.qq.com即可打开。

针对微信版本在7.0+,微信有对H5开关做了调整,需要在聊天窗口输入如下:

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

2、手机通过usb连接到电脑,打开USB调试模式,通过adb devices命令检测到设备

3、进入到小程序中

这点相信大家都知道如何进入小程序。

4、使用uc - devtools检测webview页面

显示的webview版本是57.xxx,这里就是微信X5内核的版本,不是android System webview版本,同样也可以点击inspect查看页面元素

可以看到当前就是一个html页面,我们可以采取常规web元素定位方式来定位元素

注意事项:

  (1)页面空白加载不出来,这是因为Google的inspect工具需要访问到墙外的网站,所以需要有FQ工具或者VPN方式;

  (2)微信在新版本中对小程序调试入口加上了限制:在微信主窗口下来打开小程序,在chrome中通过inspect工具是检测不到小程序对应的url入口的;

    解决方案:

    在微信->发现->搜一搜搜索小程序,即可发现在inspect工具中可以将对应url显示出来。

  (3)还有一点需要注意,如果点击右上角关闭了小程序之后,一定要记得从后台清理下对应的小程序进程(关闭之后小程序还在后台运行),再次点击重启小程序。

5、默认appium-desktop安装之后里面自带的chromedriver不是2.26的,需要手动去官网下载对应版本的chromedriver:

  http://chromedriver.storage.googleapis.com/index.html

  将其放到appium的chromedriver对应目录中,我的是:

  C:\Users\Administrator\AppData\Local\appium-desktop\app-1.5.0\resources\app\node_modules\appium\node_modules\appium-chromedriver

6、微信/qq有很多的进程,我们要确定当前web页面是位于哪个进程中:

确定我们当前微信的页面运行在com.tencent.mm:toolsmp中

7、在desiredCapabilities中指定:

// 支持X5内核应用自动化配置
desiredCapabilities.setCapability("recreateChromeDriverSessions", true);
// ChromeOptions使用来定制启动选项,因为在appium中切换context识别webview的时候,
// 把com.tencent.mm:toolsmp的webview识别成com.tencent.mm的webview.
// 所以为了避免这个问题,加上androidProcess: com.tencent.mm:toolsmp
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("androidProcess", "com.tencent.mm:toolsmp");
desiredCapabilities.setCapability(ChromeOptions.CAPABILITY, options);
// 初始化会默认将chrome浏览器打开,需要将Browser置为空
desiredCapabilities.setBrowserName("");

8、根据chrome的inspect工具得到web元素的信息

测试流程如下:

  选择柠檬班软件测试小程序->点击老师->滑动老师列表找到“歪歪”

  "老师"对应的xpath://*[@id="js-tab-bar"]/li[3]

  "歪歪"对应的xpath://em[text()='歪歪']

测试代码对应如下:

// 休眠一下
Thread.sleep(5000);
// 找到微信的发现并点击
androidDriver.findElementByAndroidUIAutomator("new UiSelector().text(\"发现\")").click();
// 点击发现里面搜一搜
androidDriver.findElementByAndroidUIAutomator("new UiSelector().text(\"搜一搜\")").click();Thread.sleep(2000);// 点击搜索框
androidDriver.findElement(By.id("com.tencent.mm:id/jd")).click();androidDriver.findElement(By.id("com.tencent.mm:id/jd")).sendKeys("柠檬班软件测试");Thread.sleep(2000);// 点击搜索结果中的柠檬班软件测试(采用adb命令坐标点击的方式)
execAdb("adb shell input tap 300 200");Thread.sleep(4000);// 点击柠檬班软件测试小程序
execAdb("adb shell input tap 300 500");// 等待小程序加载完成
Thread.sleep(10000);// 获取到所有的contexts
System.out.println("所有的contexts:" + androidDriver.getContextHandles());// 切换到小程序webview对应的context中
androidDriver.context("WEBVIEW_com.tencent.mm:toolsmp");
Thread.sleep(2000);// 获取到所有的handles
Set<String> windowHandles = androidDriver.getWindowHandles();
System.out.println("所有的windowsHandles" + windowHandles);// 遍历所有的handles,找到当前页面所在的handle:如果pageSource有包含你想要的元素,就是所要找的handle
// 小程序的页面来回切换也需要:遍历所有的handles,切换到元素所在的handle
for (String windowHandle : windowHandles) {System.out.println("切换到对应的windowHandle:" + windowHandle);androidDriver.switchTo().window(windowHandle);Thread.sleep(2000);if (androidDriver.getPageSource().contains("柠檬班")) {break;}
}
// 点击老师
androidDriver.findElement(By.xpath("//*[@id=\"js-tab-bar\"]/li[3]")).click();// 通过js滚动到指定的元素 (这个元素已经在文档中间已经存在,但是还是不可见的)
WebElement ele=androidDriver.findElement(By.xpath("//em[text()='歪歪']"));
Thread.sleep(2000);
// 将Driver实例化为js对象
JavascriptExecutor jExecutor=(JavascriptExecutor)androidDriver;
// 滑动到上面定位到的元素的位置
jExecutor.executeScript("arguments[0].scrollIntoViewIfNeeded(true);", ele);Thread.sleep(2000);

到目前为止,微信小程序自动化代码实现就完成了,后续按照自己的需求编写代码完成。

appium - X5内核应用相关推荐

  1. android x5 webview报错,appium 混合 APP,x5 内核,webview 切换报错

    前言:15 号左右,开发和我说搞了一个高逼格的东西,亲儿子换成 QQx5 的内核了,然后我这边发现____以前可以直接定位的,现在更换 x5 内核之后 H5 页面的元素竟然 switch_to.con ...

  2. 基于X5内核的UI自动化

    前言 最近无论是在微信.QQ浏览器.微信小程序还是加载X5内核的页面进行UI自动化,都会遇到X5内核自动化问题,这篇进行一个问题的总结. 基础介绍 1.什么是X5内核? X5内核是腾讯基于优秀开源We ...

  3. vue在微信里面的兼容问题_vuejs在安卓系统下微信X5内核这个兼容性问题如何破?...

    小弟第一次使用vue.js做项目开发就遇到了一个坑,本想把区域选择独立为一个子组件来使用,但是组件模式开发的select区域下拉列表在安卓系统的腾讯系的X5内核竟然报错了,导致弹出的select选择框 ...

  4. Android使用腾讯浏览服务X5内核

    [前期准备] 腾讯X5 jar包下载地址 [点击打开] 本次完整DEMO源码 [打开Github] [集成步骤] 第一步:下载jar包添加到项目 第二步:添加权限 [java] view plainc ...

  5. android 集成x5内核时 本地没有,腾讯浏览服务-接入文档

    三.SDK集成步骤 1. 第一步 下载 SDK jar 包放到工程的libs目录下,将源码和XML里的系统包和类替换为SDK里的包和类,具体对应如下: 系统内核 SDK内核 android.webki ...

  6. 腾讯x5加载本地html乱码,腾讯X5内核播放器遇到的问题

    最近在写一个和视频有关的项目,用到了腾讯x5内核的webview.利用webview调用本地js文件来播放视频.事情本身很顺利,但是在过程中遇到了一些小插曲,在此记录一下. 1.去除播放器中的广告 正 ...

  7. 移动web时代已开启:腾讯X5内核浏览服务

    随着移动互联网的快速发展,手机浏览器市场也变得异常火爆.当HTML5从技术变成标准并逐步成为现实.浏览器厂商纷纷推出自主研发的内核,X5内核浏览便是其中的佼佼者. X5内核浏览服务是什么? X5内核浏 ...

  8. debug5x 微信_微信X5内核webview调试

    title: 微信X5内核webview调试 date: 2015-12-15 03:51 comments: true tags: [debug, webview, 微信] 题记 记得在简书中很早就 ...

  9. android 腾讯x5内核 浏览器

    1.浏览器内核: 主流浏览器内核介绍(前端开发值得了解的浏览器内核历史) 浏览器内核历史介绍: 在android 4.4之前,浏览器用的还是webkit 在android 4.4之后,google就抛 ...

最新文章

  1. Loonframwork到SWT的移植测试(JAVA GAME TEST SOURCE)
  2. unity3d Update()和FixedUpdate()的区别
  3. HQL的使用和limit的替代
  4. java 模拟登陆exe_Java简单模拟登陆和爬虫实例---博客园老牛大讲堂
  5. C#编写运行在Linux环境下的采用Mediainfo来获取多媒体文件信息的代码
  6. 同一台电脑安装python2python3
  7. 汇编语言:实验10 根据材料编程—3.数值显示,编程,将data段中的数据以十进制形式显示出来
  8. 远程打开其他电脑的computer management
  9. A wet night
  10. STM32_HAL新建工程
  11. Tomcat7安装(jdk 1.7环境)
  12. 批量修改文件夹名称的一部分
  13. 现在国内程序员的工资是什么行情?
  14. VMware vmdk文件打开方法
  15. 快速入手Web幻灯片制作
  16. 水果店做生意不好怎么办,水果店生意不好如何做好
  17. 2009-09-23 18:04 by 不仅仅是通用权限设计, 3508 visits, 网摘, 收藏, 编辑
  18. python象棋编程_Python开发象棋小游戏(绘制棋盘)
  19. 邮箱的收信服务器在哪里,网易邮箱帮助中心 - 收信
  20. Python输入音频wav同步嘴型源码方案

热门文章

  1. php论坛整合,PHPCMS整合Discuz论坛
  2. Predictable Programming on a Precision Timed Architecture
  3. scratch简单编程
  4. 乔治亚理工学院计算机专业,乔治亚理工学院计算机专业成功录取
  5. 教你用 css 写一个拟物化图标
  6. 在Power BI中用DAX新建列的方式进行累计求和
  7. 中职计算机优质课教学设计,中职教师优秀教学设计
  8. 广州市科学技术局关于开展2022年广州市科技计划项目验收工作的通知
  9. 记录一下:老衲的py路程 mac下的tkinter小应用
  10. 开源应用中心 | 无需开发,如何快速搭建一款轻量级CRM系统?