Appium自动化测试之微信h5元素识别和代码实战
总会有人问微信的自动化测试怎么做。其实我不太明白,为啥你要对ta做自动化测试啊,除非你们公司产品是基于微信做的开发否则没必要。即使一个公众号我也觉得没必要做自动化测试,基本功能点下没问题就可以了,毕竟都是配置的,除非你后台配置错了。(有时候真搞不懂这胡乱的测试,你咋不把整个微信都测一遍啊)
微信的本质
微信其实就是一个混合的app,客户端里嵌入的webview,明白这个就好说了。大家一定要注意,app中的native可以用uiaotumator来查看元素,但webview里的ta是不行的可以使用chrome来查看,这个是很多初学者不明白的地方。
如何查看微信webview中的元素
几个前提:
1、手机打开【开发者模式】
2、app必须是debug模式(别问我怎么弄,自己问开发去)
3、手机通过USB连接电脑,且能够识别出来手机(不会的自己google去。。。)
4、可以翻墙。。。你懂的
有了这几个前提之后就可以正式开始了,敲黑板。。。。
1、打开微信,在任意对话框中输入debugx5.qq.com并发送

2、点击发送成功的debugx5.qq.com,稍等片刻进入设置页面
3、切换到【信息】,勾选【是否打开tbs内核】,如图

4、退出设置
5、进入【发现】>【看一看】
6、打开chrome,地址栏输入chrome://inspect/#devices,可以看到设备或者你访问的资源(看不到的自己google,很多文章介绍)
7、随便点击【看一看】里的一篇文章,在chrome中会自动显示出来,如下图中的专题就是点击之后出来的

8、点击对应的【inspect】就可以看到页面了,接下来就可以轻松识别元素了,和用f12查看元素没有区别,如果你还不会请自行面壁去吧
(此处需要翻墙,否则显示的是白页)

代码实战
上面这些搞定了,在Appium里写代码就简单了,先说下关键的几个点:
1、#必须加上此句
desired_caps['chromeOptions']={'androidProcess': 'com.tencent.mm:tools'}
小强提示:
微信的package name=com.tencent.mm,activity=com.tencent.mm.ui.LauncherUI,不要问我怎么知道的。。。
2、#可以通过下面的语句输出webview的名称
contexts=driver.contexts
print('contexts=',contexts)
3、#使用下面的语句切换到指定的webview里
driver.switch_to.context('WEBVIEW_com.tencent.mm:tools')
4、切换到webview里面,剩下的定位方式和web一模一样,就是上面讲的元素识别方法
5、#如果想返回原生态的view,可以用下面的语句
driver.switch_to.context("NATIVE_APP")#参数固定
#以打开微信>点击【发现】>点击【看一看】>获取文章列表中某个文章的标题为例,其中进入【看一看】之后就是webview了。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
from appium import webdriverimport time#QQ群522720170desired_caps = {}desired_caps = { 'platformName': 'Android', 'platformVersion': '23', 'deviceName': 'Android Emulator', 'unicodeKeyboard': 'True', 'resetKeyboard': 'True', 'appPackage': 'com.tencent.mm', 'appActivity': 'com.tencent.mm.ui.LauncherUI', 'chromeOptions': {'androidProcess': 'com.tencent.mm:tools'}}driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)time.sleep(10)driver.find_element('name','发现').click()time.sleep(10)driver.find_element('name',"看一看").click()time.sleep(10)#获取当前上下文c=driver.contextsprint(c)#输出结果['NATIVE_APP', 'WEBVIEW_com.tencent.mm:tools']#切换为 webview,名称就是从上面的语句得来的driver.switch_to.context('WEBVIEW_com.tencent.mm:tools')#获取h3标签的文本并打印出来titles = driver.find_elements('tag name','h3')print(titles[2].text) |
至此就全部搞定了,是不是很简单?
原文:https://blog.csdn.net/xqtesting/article/details/79376688
Appium自动化测试之微信h5元素识别和代码实战的更多相关文章
- appium自动化测试之UIautomatorviewer元素定位
appium自动化测试之UIautomatorviewer元素定位 标签(空格分隔): uiautomatorviewer元素定位 前面的章节,已经总结了怎么搭建环境,怎样成功启动一个APP了,这里具 ...
- python_appium 之使用Appium Inspector定位工具进行元素识别,编写验证demo
一.前提条件 appium环境搭建完成,模拟器Genymotion 安装完成,且已经下载成功了模拟设备 二.元素识别操作步骤及demo 1.进入appium如下菜单 2.填写Desired Capab ...
- appium自动化测试之元素定位
方法一 使用SDK中附带的uiautomatorviewer来定位 在SDK安装目录下的tools下有个uiautomatorviewer.bat批处理文件点击运行 运行后(注意appium desk ...
- appium 自动化测试之知乎Android客户端
appium是一个开源框架,相对来说还不算很稳定.转载请注明出处!!!! 前些日子,配置好了appium测试环境,至于环境怎么搭建,参考:http://www.cnblogs.com/tobecraz ...
- Python + Appium 自动化操作微信入门看这一篇就够了
简介 Appium 是一个开源的自动化测试工具,支持 Android.iOS 平台上的原生应用,支持 Java.Python.PHP 等多种语言. Appium 封装了 Selenium,能够为用户提 ...
- Appium测试,定位H5元素(HTML5)
代码如下: public static void main(String[] args) { try { AndroidDriver driver; ...
- Windows下Python3+nose+appium自动化测试之Android篇
[本文出自天外归云的博客园] 简介 以下用来做自动化测试的这款app叫最爱抓娃娃,以后会改名为网易抓娃娃. 下文提到的appiumier项目里会包含用来测试的apk包以及自动化测试代码. 先说一个坑 ...
- Appium自动化测试之Appium的安装与配置
Appium自动化测试- Appium环境的安装与配置Appium中文文档: https://github.com/appium/appium/tree/master/docs/cn Appium的安 ...
- (C#)Appium自动化测试之mobile:shell输入法
1.ADB执行Shell命令 a.如果电脑上已装Appium,那么需要在高级设置里勾选 Relaxed Security. 如图: b.cmd命令行启动appium appium --rela ...
随机推荐
- SPA项目开发之登录
前端 首先安装开发模板 npm install element-ui -S npm install axios -S npm install qs -S npm install vue-axios - ...
- 如何解决android 通知栏不显示的问题
android 8.0 以后的版本,在创建通知栏的时候,加了一个channelId的东西.要想在上述版本中显示通知,总共分两步 1.创建Channel if (Build.VERSION.SDK_IN ...
- C++ int型负数除法取余问题
1:关于除法,不管是正数还是负数都是向0取整的:10/4 = 2,10/(-4) = -2 2:负数取余,通过取模来判定 |小| % |大| = |小| 符号同前 |大| % |小| = |余| ...
- 新终端必须source /etc/profile的解决办法,同时解决变色问题
Linux环境变量文件 /etc/profile:在登录时,操作系 统定制用户环境时使用的第一个文件 ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. /etc /enviro ...
- Please make sure you have the correct access rights and the repository exists.
参考:https://blog.csdn.net/jingtingfengguo/article/details/51892864,感谢老哥. 从码云克隆项目到新的服务器上,报错: Please ma ...
- Nacos做配置中心经常被问到的问题
加载多个配置文件怎么处理? 通过@NacosPropertySource可以注入一个配置文件,如果我们需要将配置分类存储或者某些配置需要共用,这种需求场景下,一个项目中需要加载多个配置文件,可以可以直 ...
- pyqt添加启动等待界面
一.实验环境 1.Windows7x64_SP1 2.anaconda3.7 + python3.7(anaconda集成,不需单独安装) 3.pyinstaller3.5 #使用pyinstalle ...
- 【Linux命令】常用系统工作命令11个(echo、date、reboot、poweroff、wget、ps、top、pidof、kill、killall、pkill)
目录 echo命令 date命令 reboot命令 poweroff命令 wget命令 ps命令 top命令 pidof命令 kill命令 killall命令 pkill命令 一.echo命令 ech ...
- jsp模板
<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+re ...
- jQuery 源码分析(十五) 数据操作模块 val详解
jQuery的属性操作模块总共有4个部分,本篇说一下最后一个部分:val值的操作,也是属性操作里最简单的吧,只有一个API,如下: val(vlaue) ;获取匹配元素集合中第一个元素的 ...