博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
appium+python自动化42-微信公众号 (可能以后会遇到也遇到切换不了webview的问题 记录再此 还没试)...
阅读量:5047 次
发布时间:2019-06-12

本文共 2593 字,大约阅读时间需要 8 分钟。

前言

本篇介绍如何在微信公众号上自动化测试,以操作我的个人公众号:yoyoketang为例,没关注的,先微信关注了,再跟着操作

环境准备:

python 3.6
appium 1.7以上版本
微信6.6.6
微信里面webview 57.0
电脑上chrome版本 66.0
appium-chromedriver路径下chromedriver 2.28

开启微信debug模式

1.以微信为例,webview的版本号可以用chrome浏览器查看到,由于微信用的是x5内核,跟其他app不太一样,这里需要先开启微信的debug模式

开启微信debug模式:在微信聊天界面输入:debugx5.qq.com,如何勾选"打开TBS内核Inspector调试功能

2.查看微信里面webview版本,直接在电脑chrome浏览器输入:chrome://inspect/#devices

再打开微信的公众号页面,刷新浏览器页面,就会出现webview版本号57.0

ChromeOptions

1.在appium中context的切换时,识别webview的时候, 把com.tencent.mm:tools的webview识别成com.tencent.mm的webview. 从而导致context切换失败。

所有这里必须加上这个参数ChromeOptions,这个是关键。

'chromeOptions': {'androidProcess': 'com.tencent.mm:tools'}

2.appium1.7以后的版本支持Uiautomator2了,为了保险一点,最好加上这个,用Uiautomator2执行

'automationName': 'Uiautomator2'

from appium import webdriverimport time# 作者:上海-悠悠 QQ交流群:512200893desired_caps = {                'platformName': 'Android', 'platformVersion': '7.0', 'deviceName': 'A5RNW18316011440', 'appPackage': 'com.tencent.mm', 'appActivity': '.ui.LauncherUI', 'automationName': 'Uiautomator2', 'unicodeKeyboard': True, 'resetKeyboard': True, 'noReset': True, 'chromeOptions': { 'androidProcess': 'com.tencent.mm:tools'} }

操作公众号

1.操作步骤如下(前提要先关注微信公众号:yoyoketang):

  • 点微信首页搜索按钮
  • 输入yoyoketang内容搜索
  • 点开公众号
  • 点公众号菜单-精品分类

2.代码实现

切换webview

# 切换到webviewtime.sleep(2)print(driver.contexts) driver.switch_to.context('WEBVIEW_com.tencent.mm:tools')

打印结果:

['NATIVE_APP', 'WEBVIEW_com.tencent.mm:tools']

参考代码:

from appium import webdriverimport time# 作者:上海-悠悠 QQ交流群:512200893desired_caps = {                'platformName': 'Android', 'platformVersion': '7.0', 'deviceName': 'A5RNW18316011440', 'appPackage': 'com.tencent.mm', 'appActivity': '.ui.LauncherUI', 'automationName': 'Uiautomator2', 'unicodeKeyboard': True, 'resetKeyboard': True, 'noReset': True, 'chromeOptions': { 'androidProcess': 'com.tencent.mm:tools'} } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) driver.implicitly_wait(10) # 作者:上海-悠悠 QQ交流群:512200893 # 点微信首页搜索按钮 driver.find_element_by_accessibility_id("搜索").click() # 输入内容搜索 time.sleep(3) driver.find_element_by_id('com.tencent.mm:id/hx').send_keys("yoyoketang") # 点开公众号 time.sleep(3) driver.find_element_by_id('com.tencent.mm:id/l7').click() # 点公众号菜单-精品分类 time.sleep(3) driver.find_elements_by_id('com.tencent.mm:id/aaq')[0].click() # 切换到webview time.sleep(2) print(driver.contexts) driver.switch_to.context('WEBVIEW_com.tencent.mm:tools') # 点webview上元素 目前有个问题会报找不到元素 driver.find_element_by_xpath(".//*[@id='namespace_1']/div[1]/div/div[2]").click() time.sleep(2) driver.quit()

 来源: 

转载于:https://www.cnblogs.com/kaibindirver/p/10725807.html

你可能感兴趣的文章
全面整理的C++面试题
查看>>
Activity和Fragment生命周期对比
查看>>
OAuth和OpenID的区别
查看>>
android 分辨率自适应
查看>>
查找 EXC_BAD_ACCESS 问题根源的方法
查看>>
国外媒体推荐的5款当地Passbook通行证制作工具
查看>>
日常报错
查看>>
list-style-type -- 定义列表样式
查看>>
hibernate生成表时,有的表可以生成,有的却不可以 2014-03-21 21:28 244人阅读 ...
查看>>
mysql-1045(28000)错误
查看>>
Ubuntu 编译出现 ISO C++ 2011 不支持的解决办法
查看>>
1.jstl c 标签实现判断功能
查看>>
Linux 常用命令——cat, tac, nl, more, less, head, tail, od
查看>>
超详细的Guava RateLimiter限流原理解析
查看>>
VueJS ElementUI el-table 的 formatter 和 scope template 不能同时存在
查看>>
Halcon一日一练:图像拼接技术
查看>>
Swift - RotateView
查看>>
iOS设计模式 - 中介者
查看>>
centos jdk 下载
查看>>
HDU 1028 Ignatius and the Princess III(母函数)
查看>>