进行调试,打开X5:

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

一般前两个就可以了。

微信打开:http://debugx5.qq.com,打开页面,按图中勾选。

=====================================================

然后再谷歌浏览器输入:chrome://inspect/devices#devices,

打开页面可能会报:

提示Pending authentication:please accept debugging session on the device

参考解决办法:《pc调试微信h5页面提示Pending authentication:please accept debugging session on the device的解决方法

手机的开发者模式关掉再打开(我是用的这个方法,因为WEB自动化测试谷歌浏览器轻易我不升级)

=====================================================

但是上面这块会发现点击【inspect】会出现404或者空白页面

解决办法:除非翻墙或者用Webview离线包(淘宝买的定制包,只能自己使用)

用的这个程序,导入定制包就可以了

========================================================

后来发现查看小程序页面还有另一种办法:

右下角多了一个调试工具

点击获取页面上的元素

可以定位到【我要登录】按钮的页面元素:

输入下面,查看小程序信息:

adb shell dumpsys activity top | grep ACTIVITY

adb shell ps 4527

查看小程序运行在哪里:

com.tencent.mm:appbrand0,是必须要的。

from appium import webdriver
from time import sleep desired_caps = {
'platformName': 'Android',
'fastReset': 'false',
'noReset': True,
'platformVersion': '',
'deviceName': 'b938d4a4',
'appPackage': 'com.tencent.mm',
'appActivity': '.ui.LauncherUI',
'fullReset': 'false',
# 'unicodeKeyboard': 'True',
# 'resetKeyboard': 'True',
'chromeOptions': {
'androidProcess': 'com.tencent.mm:appbrand0'(在这里用到)
}
} driver = webdriver.Remote('http://0.0.0.0:4723/wd/hub', desired_caps)
sleep(5)
driver.find_element_by_android_uiautomator('text("微信")').click() #点击微信Tab # 定义一个滑动屏幕的方法
def swipeDown(t):
x = driver.get_window_size()['width']
y = driver.get_window_size()['height']
x1 = int(x * 0.5) # x坐标
y1 = int(y * 0.25) # 起始y坐标
y2 = int(y * (0.25 + t)) # 终点y坐标
driver.swipe(x1, y1, x1, y2, 500) swipeDown(0.4) # 向下滑动屏幕的40%,准备从顶部进入小程序
sleep(2)
driver.find_element_by_android_uiautomator('text("xxx")').click() #点击顶部的图标进入小程序
sleep(5)
print(driver.contexts)
driver.switch_to.context('WEBVIEW_com.tencent.mm:tools')
sleep(5)
driver.find_element_by_css_selector(".footer2").click()

但是运行后报错:

提示当前Chromedriver版本过高2.45对应版本为70的Chrome

参考文章:《微信小程序自动化探索实践,欢迎提意见

输入网址,查看Chromedriver与webview版本对应关系:

https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/web/chromedriver.md

我的chrome=66.0.3359.126,所以下载2.39版本的Chromedriver

经查询appium日志(下图)的Chromedriver路径为:

/Users/zhangc/.nvm/versions/node/v10.15.0/lib/node_modules/appium/node_modules/_appium-chromedriver@4.10.1@appium-chromedriver/chromedriver/mac/

把下载的替换就可以了。

但是还是报错:定位不到元素

经过大神的文章得知,必须要进入handles

参考文章:《appium+python自动化43-微信公众号webview操作

需要加上下面的代码:

handles = driver.window_handles
print(handles)
print(driver.current_window_handle)
driver.switch_to_window(handles[1])

完整代码如下:

from appium import webdriver
from time import sleep desired_caps = {
'platformName': 'Android',
'fastReset': 'false',
'noReset': True,
'platformVersion': '',
'deviceName': 'b938d4a4',
'appPackage': 'com.tencent.mm',
'appActivity': '.ui.LauncherUI',
'fullReset': 'false',
# 'unicodeKeyboard': 'True',
# 'resetKeyboard': 'True',
'chromeOptions': {
'androidProcess': 'com.tencent.mm:appbrand0'
}
} driver = webdriver.Remote('http://0.0.0.0:4723/wd/hub', desired_caps)
sleep(5)
driver.find_element_by_android_uiautomator('text("微信")').click() #点击微信Tab # 定义一个滑动屏幕的方法
def swipeDown(t):
x = driver.get_window_size()['width']
y = driver.get_window_size()['height']
x1 = int(x * 0.5) # x坐标
y1 = int(y * 0.25) # 起始y坐标
y2 = int(y * (0.25 + t)) # 终点y坐标
driver.swipe(x1, y1, x1, y2, 500) swipeDown(0.4) # 向下滑动屏幕的40%,准备从顶部进入小程序
sleep(2)
driver.find_element_by_android_uiautomator('text("xxx")').click() #点击顶部的图标进入小程序
sleep(5)
print(driver.contexts)
# 切换上下文
driver.switch_to.context('WEBVIEW_com.tencent.mm:tools')
sleep(5)
handles = driver.window_handles
print(handles)
print(driver.current_window_handle)
# 切换第二个handle
driver.switch_to_window(handles[1])
# 点击登录按钮
driver.find_element_by_css_selector(".footer2").click()

成功!

附录其他参考文章:

Appium 微信小程序 UI 自动化

Android通过Chrome Inspect调试WebView的H5 App出现空白页面的解决方法(不需要FQ)

微信小程序自动化测试实践

【Appium + Python + WebviewH5】之微信小程序自动化测试的更多相关文章

  1. 微信小程序自动化测试最佳实践(附 Python 源码)

    本文为霍格沃兹测试学院测试大咖公开课<微信小程序自动化测试>图文整理精华版. 随着微信小程序的功能和生态日益完善,很多公司的产品业务形态逐渐从 App 延升到微信小程序.微信公众号等.小程 ...

  2. Python flask构建微信小程序订餐系统

    第1章 <Python Flask构建微信小程序订餐系统>课程简介 本章内容会带领大家通览整体架构,功能模块,及学习建议.让大家在一个清晰的开发思路下,进行后续的学习.同时领着大家登陆ht ...

  3. Python flask构建微信小程序订餐系统☝☝☝

    Python flask构建微信小程序订餐系统☝☝☝ 一.Flask MVC框架结构 1.1实际项目结构 1.2application.py  项目配置文件 Flask之flask-script模块使 ...

  4. Python flask构建微信小程序订餐系统✍✍✍

    Python flask构建微信小程序订餐系统  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题, ...

  5. python爬取微信小程序(实战篇)

    python爬取微信小程序(实战篇) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90452656 展开 一.背景介绍 近期有需求需要抓 ...

  6. Python爬取微信小程序(Charles)

    Python爬取微信小程序(Charles) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90045204 一.前言 最近需要获取微信小 ...

  7. appium+java(五)微信小程序自动化测试实践

    前言: 上一篇<appium+java(四)微信公众号自动化测试实践>中,尝试使用appium实现微信公众号自动化测试,接着尝试小程序自动化,以学院小程序为例 准备工作 1.java-cl ...

  8. 微信小程序自动化测试实践

    由于腾讯系QQ.微信等都是基于腾讯自研X5内核,不是google原生webview(其实就是进行了二次定制).实质上也是混合应用的一种,现在很多app产品也开始流行采用X5内核作为其内嵌web浏览服务 ...

  9. 微信小程序自动化测试--接口测试

    偷得一篇文章: postman测试微信小程序接口---postman https://www.sunzhongwei.com/using-the-postman-test-wechat-mini-ap ...

随机推荐

  1. three 3D实例学习

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  2. vue+element 表格按需合并

    这个功能难度感觉一般般吧,记录一下,以后碰到了直接来复制,懒得再写了 效果如下: 前6列是合并,后面的有几行,动态显示几行 重点是在数据处理上面做文章,合并列大家都会,数据处理呢?这样来处理, 我们拿 ...

  3. 完整的房间类游戏解决方案AiJ

    介绍 AiJ是一套完整的房间类游戏解决方案,支持无限水平扩展来满足更大的人数承载,并且提供了良好的调试接口. 主要模块包括: 注册中心 大厅服务 游戏服务 亲友圈服务 运营管理系统 CocosCrea ...

  4. Linux从入门到精通总结(非原创)

    文章大纲 一.课程内容总结二.课程学习地址三.学习资料下载四.参考文章 一.课程内容总结   二.课程学习地址 第一天:https://www.cnblogs.com/WUXIAOCHANG/p/10 ...

  5. javascript中事件总结&通用的事件侦听器函数封装&事件委托

    前言: JAVASCRIPT与HTML之间的交互是通过事件来实现的.事件,就是文档或浏览器窗口中发生的一些特定交互瞬间.可以使用侦听器( 或处理程序 )来预定事件,以便事件发生时执行相应的代码.这种在 ...

  6. [转]【response】HttpServletResponse接口

    创建时间:6.19 & 6.24 1.HttpServletResponse概述 我们在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参 ...

  7. 为 Jupyter 添加目录

    1.依次在 anaconda prompt 窗口中执行以下两句命令 pip install jupyter_contrib_nbextensions # 安装第三方包 jupyter contrib ...

  8. tf.gather_nd()

    tf.gather_nd( params, indices, name=None, batch_dims=0) TensorFlow链接:https://tensorflow.google.cn/ap ...

  9. Jupyter Notebook---不需认证,与nginx搭配远程访问及下载

    如果默认启动,jupyter notebook需要token或是password登陆,且在nginx后面,下载会报403限制. Blocking Cross Origin request from h ...

  10. linux 以导入文件形式添加定时任务(crontab)时需要注意的坑

    在实际操作过程中发现,使用导入文件形式添加定时任务时,会将用户已有的定时任务全部覆盖清理(先清空,再重新导入),所以在使用文件导入定时任务时,需要先将已有定时任务导出,然后将新任务进行追加到已有定时任 ...