评论

Minium项目实践-第二篇

以下分享均来源于项目实践中遇到的问题,干货满满。只介绍解决问题方法,部分方法经过了封装,不一定能直接用。仅供参考。

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)





最后一次编辑于  04-17  
点赞 2
收藏
评论

1 个评论

  • 幻风
    幻风
    05-21

    求完整源码

    05-21
    赞同
    回复
登录 后发表内容