1.自定义组件定位,用>>>连接
场景:存在自定义组件,class定位
self.mini.page.get_element(selector="loginform>>>button.btn-primary.lg-submit", inner_text="登录")
2.分页查找元素
场景:当数据量较多,目标元素不在当前页,就需要循环检查元素是否存在,再触发翻页操作。
def find_page_data(self, selector, inner_text):
"""
分页加载的数据查找
触发onReachBottom,再查找数据
"""
i = 0
while not self.is_element_exist(selector, inner_text, timeout=3):
self.mini.page.call_method("onReachBottom")
i = i + 1
if i >= 10: #可以根据自己需求设置翻页次数
raise Exception("没有找到数据")
3.带options页面跳转
场景:在A页面(webview),有个订单号123456789,手动可以通过点击订单号,跳转到B页面(/pages/order/Order)。
但是minium无法操作webview上控件,则可以通过navigate_to到B页面。
self.mini.app.navigate_to(" /pages/order/Order?no=123456789")
4.给页面设置数据
场景:页面的某控件根据page.data的值展示不同效果。
self.mini.app._current_page.data = data
5.获取图形验证码
像我们项目中,图像验证码存储在redis中。每个图形验证码存在一个对应的uuid,在redis中以uuid作为key就可以查到value
def get_pic_code(self, selector="image.code-img"):
# 点击图片验证码,通过src属性获取uuid,再从redis中读取图形验证码
ele = self.get_element(selector)
#查看小程序元素发现 src属性里面含有uuid.例如: https://host/api/genGraphicVerify/30a941fd-6b1f-45ca-b5da-78a921a37d8e
uuid = ele.attribute(name='src')[0].split('genGraphicVerify/')[1]
self.logger(f'uuid {uuid}')
from common.redis_util import RedisUtil
pic_code = RedisUtil().get_pic_code(uuid)
self.logger(f"获取到图片验证码:{pic_code}")
return pic_code
6.模拟取消打电话
def call_up(self):
# 模拟取消打电话
result = {"errMsg": "makePhoneCall:fail cancel"}
self.mini.app.mock_wx_method(method="makePhoneCall", result=result)
# 点击按钮,弹出是否拨打电话的弹框
self.click(selector="image.phone-img")
7.数据驱动,可自定义用例名称。
先定义测试用例显示格式testNameFormat="%(name)s_%(index)s",再在ddt_data中设置name以及data。
@minium.ddt_class(testNameFormat="%(name)s_%(index)s")
class TestCaseBuyGoods(BaseCase):
@minium.ddt_case(
minium.ddt_data(name='切换到页签一', data=("//text[contains(text(),'页签一')]")),
minium.ddt_data(name='切换到页签一', data=("//text[contains(text(),'页签一')]")),
)
def test_0101_03_total_data(self, args):
[selector, inner_text, route] = args
result = self.myPage.total_data(selector, inner_text, route)
self.assertTrue(result)
求完整源码