手记

ATX ui自动化ios实战(二)

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

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~


感谢阅读,欢迎转载。

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

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

共勉。



作者:xFlamingo
链接:https://www.jianshu.com/p/93ee3a34014c


0人推荐
随时随地看视频
慕课网APP