美文网首页我爱编程
ATX ui自动化ios实战(二)

ATX ui自动化ios实战(二)

作者: xFlamingo | 来源:发表于2018-08-06 20:51 被阅读0次

    在上一篇中我讲解了怎么打开网易云课堂以及怎么登录,在本篇中将更深入的往实战方向靠近,将会讲解以下功能测试用例的脚本如何编写。

    1.更改学习兴趣

    2.搜索课程并标记为想学

    3.观看课程

    1.更改学习兴趣

    相信有很多小伙伴注意到我们在初次使用网易云课堂的时候,它会让我们选择学习兴趣(并根据学习兴趣为我们推送我们感兴趣的内容),如果我们在初次使用时没有选择也不要紧,我们在“帐号”中再次进入选择

    学习兴趣

    在这里,能看到我之前就已经选好了一些兴趣,接下来我打算选择“办公软件”,然后去验证是否选择成功。

    需要做的操作:进入“帐号”——进入“学习兴趣”——选择“办公软件”——进入“首页”——验证是否成功选择

    # 进入帐号

    session(name='帐号',visible=True).tap()

    # 进入学习兴趣

    session(name='学习兴趣').tap()

    # 选择办公软件

    session(name='办公软件').tap()

    session(name='选好了').tap()

    # 进入首页

    session(name='首页').tap()

    # 下拉刷新页面,使新选择的学习兴趣生效

    session.swipe(200,200,200,400)

    try:

        # 等待3秒name为办公软件的元素出现

        session(name='办公软件').wait(3)

        print('yes')

    except:

        print('no')

    以上代码是在已经登录后执行的,在未选择办公软件的情况下进行选择,并去首页检查是否选择成功。

    用到了swipe方法和wait方法,这里稍微讲一下

    swipe方法参数是x1,y1,x2,y2,即从(x1,y1)滑动到(x2,y2),

    我们比较常用的应该上滑,我们可以直接使用swipe_up方法,默认从屏幕最下端中心滑动到最上端中心。

    接下来wait方法也是特别重要的,用于检测元素是否存在,与exists方法有点像,不过wait方法有点类似于selenium中的显性等待,可以为等待某个元素出现设置一个最大时间,非常实用,而exists方法相对局限一些,它是直接检查当前时间该元素是否存在。

    2.搜索课程并标记为想学

    需要做的操作:进入“分类”——选择“编程语言”——选择“Python”——进入展示的第一个课程——点击“想学”——回退至首页——进入“我的学习”——点击“我的收藏”——检查是否展示“已收藏到“想学的课程””的消息

    session(name='分类').tap()

    session(name='编程开发').tap()

    session(name='Python').tap()

    session(name='畅销').wait()

    # 点击第一个课程的名字

    session(xpath='//*[@name="畅销"]/../../following-sibling::XCUIElementTypeCell[1]/XCUIElementTypeStaticText[1]').tap()

    session(name='想学').tap()

    session('name LIKE "*想学的课程*"').wait()

    这一节比较特别的是xpath的定位方法,一般xpath定位是写成这样的“//*[@name='xxx']”,但我发现课程名字(或评分或xx人学过或价格)在元素树中没有什么特殊的属性,比较难定位,只能通过相对位置来定位,看下图的元素树

    元素树截取

    我们能看到有两个Cell,能比较清楚的看出来每个Cell代表一个课程,如何能准确定位到Cell再进一步定位到课程名就成了问题,或许有很多人想到直接通过className来定位Cell,这确实是一个方法,但不稳定,因为在它之前还有很多Cell,如果页面有丁点变化就不准了。在这里我先定位到了畅销这个元素,再定位到它的父节点的父节点(/..代表父节点),再定位它的弟弟节点(following-sibling::完整class名[序号]),最后找到它的子节点。具体xpath用法还需要你去再学习一下,在此不再继续展开。

    3.观看课程

    需要做的操作:进入“首页”——搜索免费的“课程”——选择课程进入——点击“加入学习”

    session(className='StaticText').tap()

    session(className='StaticText').set_text('Python A~B~C~')

    session(name='Search').tap()

    session(name='Python A~B~C~').tap()

    try:

      session(name='加入学习').tap(timeout=3)

    session(name='开始学习').tap()

    except:

      session(name='进入学习').tap()

    time.sleep(10)

    # 找到视频中心点点击

    rect= session(xpath='//*[@name="lesson cancel"]/../following-sibling::XCUIElementTypeOther[1]').bounds

    session.tap(rect.x+ rect.width/ 2, rect.y+ rect.height/ 2)

    # 全屏播放

    session(name='control fullScreenIcon').tap()

    # 第一次进入时会有操作指示,需要点击一下屏幕

    try:

      # 如果有操作指示,则视频暂停,会有播放按键,此处检查是否有播放按键

      session(name='control playButton').wait(3)

    session.tap(100,100)

    except:

      pass

    finally:

      time.sleep(5)

    session.tap(100,100)

    session(name='control backIcon').tap()

    在这里用到了一个点击元素中心的特殊方法,首先通过bounds得到元素的x,y坐标,width,height宽和长,通过计算即可得到元素的中心点坐标,其它没啥特别的,前面都讲过了。

    本篇的demo链接

    链接:https://pan.baidu.com/s/1hz2fnHx18Bmkq53KlMv91w 密码:wzto

    PS:请注意不要直接执行,内有三段代码对应本文的三部分,需要运行哪部分把另外两部分注释一下。

    本篇如果有地方没看懂,欢迎在下面留言。

    下一篇将会把前面实现的所有case写在测试框架里,并最后输出一个测试报告,敬请期待。

    那我们下一篇再见吧,bye~

    感谢阅读,欢迎转载。

    如有错误请及时指出,谢谢!

    如有问题请留言,我懂的必然会回复!

    共勉。

    相关文章

      网友评论

        本文标题:ATX ui自动化ios实战(二)

        本文链接:https://www.haomeiwen.com/subject/emdbvftx.html