微信UITest
需求:
微信端公众号测试
要求:
覆盖微信公众号用户操作所有流程,模拟用户使用方式
解决方案:
1.使用已有框架Appium模拟用户操作,检测UI展示正确性!
设计思路:
微信公众号基本均为H5页面设计。我们选择selenium来进行web页面的自动化测试,appium已集成selenium众多页面操作查找方式。基本能完全覆盖web的所有测试需求。
环境搭建 Mac版:
# SetUP 1
开启微信内核调试。
微信内核开启方式: 微信会话模式中任意好友或者自己发送 debugX5.qq.com
点击发送的链接,进入到内核配置界面,打开TBS内核调试功能
# SetUP 2
Chrome 安装(建议采用最新版本的Chrome)
浏览器URL中输入: Chrome://inspect 可以看到手机
![]()
点击inspect 就可以查看手机当前页面的所有元素来。同时也可以抓取手机的接口等请求数据。
# 注意事项:
android因手机不同,每个厂商的手机应用中内置的 Android System WebView
版本不同。导致对应的ChromeDriver 版本不同。安装Chrome前请选择对应版本!
chromedriver版本 | 支持的Chrome版本 |
---|---|
v2.31 | v58-60 |
v2.30 | v58-60 |
v2.29 | v56-58 |
v2.28 | v55-57 |
v2.27 | v54-56 |
v2.26 | v53-55 |
v2.25 | v53-55 |
v2.24 | v52-54 |
v2.23 | v51-53 |
v2.22 | v49-52 |
v2.21 | v46-50 |
v2.20 | v43-48 |
v2.19 | v43-47 |
v2.18 | v43-46 |
v2.17 | v42-43 |
v2.13 | v42-45 |
v2.15 | v40-43 |
v2.14 | v39-42 |
v2.13 | v38-41 |
v2.12 | v36-40 |
v2.11 | v36-40 |
v2.10 | v33-36 |
v2.9 | v31-34 |
v2.8 | v30-33 |
v2.7 | v30-33 |
v2.6 | v29-32 |
v2.5 | v29-32 |
v2.4 | v29-32 |
要求掌握技能:
1.熟悉selenium 定位查找元素方式
2.熟悉android Uiautormator 元素操作方式。
3.熟悉分辨应用是H5还是Native。
H5/native切换方式
def SetWEBVIEW(self):
'''
:param self: 设置为 WEBVIEW模式
:return:
'''
time.sleep(5)
self.driver.switch_to.context('WEBVIEW_com.tencent.mm:tools')
time.sleep(5)
def SetNATIVEAPP(self):
'''
:param self: 设置为 NATIVE_APP模式
:return:
'''
time.sleep(5)
self.driver.switch_to.context('NATIVE_APP')
time.sleep(5)
Demo 代码片段
def startApp(self):
desired_caps = {}
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
desired_caps['newCommandTimeout'] = '180'
desired_caps['devices'] = 'android'
desired_caps['platformVersion'] = '6.0'
desired_caps['platformName'] = 'android' # 测试平台
desired_caps['deviceName'] = 'XIAOMI'
desired_caps['appPackage'] = 'com.tencent.mm'
desired_caps['appActivity'] = '.ui.LauncherUI'
desired_caps['chromeOptions'] = {'androidProcess': 'com.tencent.mm:tools'}
desired_caps['recreateChromeDriverSessions'] = True
self.driver = webdriver.Remote('http://127.0.0.1:' + deviceItems["port"] + '/wd/hub',desired_caps)
SetWEBVIEW(self)
if getelement(self, 90, "我的"):
pass
else:
time.sleep(20)
self.driver.find_element_by_id("jk_acb_101_05").click()
SetNATIVEAPP(self)
self.driver.get_screenshot_as_file(pic_path)