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