写在前面 我发现一件神奇的事,当你学一门新技术或者新的知识点遇到不会的时候,真的可以先放一放,第二天再去学习,也许说不定也就会了。 为什么这么说? 昨天文章断断续续的写了近一天,有一个组件不认识,自然也不知道该怎么处理,真的憋得脑子疼,后来一合计算了,事已至此,还是先吃饭吧,就扔一边了。 结果今天再一看,发现居然我会了,而且一个不留神,就把小程序的官方API都给过完了,所以这就再来更新了。常见组件的处理switch组件处理 image。png改变switch组件的状态 示例代码如下:deftestswitch(self):switch组件处理演示,可以脑补下单选框状态切换场景:return:self。app。navigateto(packageComponentpagesformswitchswitch)self。page。getelement(。pagesection。pagesectiongapview。bodyviewswitch:nthchild(1))。switch()slide组件处理 slider组件滑动到指定数值 示例代码如下:deftestslideto(self):slider组件处理演示:return:self。app。navigateto(packageComponentpagesformsliderslider)elementsliderself。page。getelement(pageviewviewview:nthchild(1)view。bodyviewslider)elementslider。slideto(5)time。sleep(1)self。assertEqual(elementslider。value,5,sliderok)pick组件处理 picker组件选值 Parameters: 名称类型默认值说明value看下表NotNone属性名称 value的取值: 选择器类型类型说明selector:普通选择器int表示选择了range中的第几个(下标从0开始)multiSelector:多列选择器int表示选择了range中的第几个(下标从0开始)time:时间选择器str表示选中的时间,格式为hh:mmdate:日期选择器str表示选中的日期,格式为YYYYMMDDregion:省市区选择器int表示选中的省市区,默认选中每一列的第一个值 示例代码如下:deftestpicker(self):picker组件处理演示。修改当前时间:return:self。app。navigateto(packageComponentpagesformpickerpicker)callbackcalledthreading。Semaphore(0)监听回调,阻塞当前主线程defcallback(args):nonlocalcallbackargscallbackargsargscallbackcalled。release()elsself。page。getelements(picker)self。app。hookcurrentpagemethod(bindTimeChange,callback)els〔1〕。click()阻止picker弹起els〔1〕。pick(11:18)用trigger模拟pick完成的动作scrollto组件处理 scrollview容器滚动操作 Parameters: 名称类型默认值说明xintNonex轴上滚动的距离yintNoney轴上滚动的距离 示例代码如下:deftestscrollto(self):scrollto组件处理演示:return:self。app。navigateto(packageComponentpagesviewscrollviewscrollview)callbackargsNonecallbackcalledthreading。Semaphore(0)监听回调,阻塞当前主线程defcallback(args):nonlocalcallbackargscallbackargsargscallbackcalled。release()监听滚动事件,方便最后验证滚动结果self。app。hookcurrentpagemethod(scroll,callback)这里只演示的事横向移动,主要找准你要移动的控件,整错了铁定没法移动elsself。page。getelements(scrollview)els〔2〕。scrollto(x150)横向滚动150像素self。assertTrue(callbackcalled。acquire(timeout10),callbackcalled)self。assertEqual(callbackargs〔0〕〔detail〕〔scrollLeft〕,150,pickok)swipe组件处理 切换swiper容器当前的页面 Parameters: 名称类型默认值说明indexintNone索引值,从0开始 示例代码如下:deftestswipeto(self):swipe组件处理演示:return:self。app。navigateto(packageComponentpagesviewswiperswiper)elself。page。getelement(swiper)切换到第二个tab,轮播图的Cel。swipeto(2)print(el。attribute(current))self。assertEqual(el。attribute(current),〔2〕,swipeok)move组件处理 movableview容器拖拽滑动 Parameters: 名称类型默认值说明xintNonex轴方向的偏移距离yintNoney轴方向的偏移距离 PS:x,y偏移量相对于movablearea左上角,如示例中,movablearea左上角为(25,25) 示例代码如下:deftestmoveto(self):move组件处理演示:return:self。app。navigateto(packageComponentpagesviewmovableviewmovableview)elementself。page。getelement(movableview)把movableview复位element。moveto(0,0)time。sleep(2)移动到坐标为100,100的地方element。moveto(100,100)video、audio组件 详见代码示例 video组件处理示例代码如下:deftestvideo(self):video组件处理演示:return:self。app。navigateto(packageComponentpagesmediavideovideo)elementvideoself。page。getelement(video)播放elementvideo。play()time。sleep(2)暂停elementvideo。pause()time。sleep(2)跳转到指定位置(拖到50秒位置播放)elementvideo。seek(50)time。sleep(2)elementvideo。play()1。5倍速播放elementvideo。playbackrate(1。5)time。sleep(2)进入全屏播放elementvideo。requestfullscreen(90)time。sleep(2)发送弹幕elementvideo。senddanmu(我是弹幕君!!)time。sleep(2)退出全屏elementvideo。exitfullscreen()time。sleep(2)播放elementvideo。stop() audio组件处理示例代码如下:deftestaudio(self):audio组件处理演示:return:self。app。navigateto(packageComponentpagesmediaaudioaudio)elementaudioself。page。getelement(audio)elementaudio。play()播放音频elementaudio。seek(10)快进音频elementaudio。pause()暂停音频elementaudio。setsrc(http:ws。stream。qqmusic。qq。comM500001VfvsJ21xFqb。mp3?guidffffffff82def4af4b12b3cd9337d5e7uin346897220vkey6292asdadfromtag46)设置音源链接其他示例单页面示例 直接跳转到被测试的页面,进行脚本的测试。 示例代码如下:deftestsetdata(self):单页面示例:return:self。app。navigateto(packageComponentpagescontenttexttext)self。page。data{text:只能加文字,不能删除文字,canAdd:True,canRemove:False}time。sleep(1)self。capture(canAdd)self。page。data{text:只能删除文字,不能加文字,canAdd:False,canRemove:True}time。sleep(1)self。capture(canRemove)数据驱动测试 测试框架继承自unittest,基于ddt封装的的简单封装。 示例代码如下:coding:utf8Time:2023020620:31Author:longrong。langFileName:testbase。pySoftware:PyCharmBlog:https:www。cnblogs。comlongronglangMotto:ABC(AlwaysBeCoding)importminiumminium。ddtclassclassBaseTest(minium。MiniTest):minium。exitwhenerrordeftestinit(self):这条用例失败会退出测试计划,minium。exitwhenerror可以用来修饰初始化用例self。assertEqual(1,1)minium。ddtcase(1,2,3)deftestddt(self,value):数据驱动测试,这个case会自动展开成3条用例:testddt11testddt22testddt33self。assertIn(value,〔1,2,3〕)ifnamemain:BaseTest。testddt()写在最后 关于Minium使用教程已经全部更新完了,要想学习全部可以从Minium系列教程从头学起,下篇文章将会为大家分享基于Minium的测试框架设计及开发,感兴趣的同学可以蹲一下,我是六哥,觉得文章对您有用,请星标并转发即可!