一、八种单数:(就够用了)
id
class
tag_name
linktext
包含定位
xpath
css
name
二、八种复数(暂时用不到)
三、2个底层(暂时用不到)
四、三种切换
tab(浏览器产生了多个页签)
switch_to.window(handles[-1]) #取我们产生的最新的
switch_to.window(handles[0] ) #取第一个
close #如果你切换tab,时刻要close,用完一个标签,就要关掉
alert
确定
取消
iframe
当iframe没有id或name时,先定位到iframe这个标签
xxx.iframe(element)
当iframe有name和id时
iframe(‘name‘)
iframe(‘id‘)
iframe是将一对HTML标签嵌套另一对HTML标签,所以要求一层一层的切换,如果我切进去想外出,得一层一层往外出
default:默认到最外层
鼠标悬浮操作:
原理:每次通过一个匿名函数向一个数组中 添加一个未执行的函数,这个函数就是自己的操作,当你调这个perform,才统一去将case里所有运行
.perform()
js操作
dom语句,就一种,获取这个元素,将它的style属性中的display属性干掉,让他展示出来,我们再去操作
等待
time 调试时用
隐式 不考虑
显式 必须每次都用
显式用于网络超时不稳定的风险,这个显式就能规避
步长 0.5s
超时时间10s 10s里有20个0.5 每隔0.5s就问一次,相当于问20次,没有timeout的exception
如果写 case,遇到一个定位不到元素,排查:
1.分析HTML,看清楚哪些是我们要用的唯一属性
2.看清父子级关系
3.有没有浏览器的tab要切换
4.排查有没有iframe
5.排查这个元素在代码调用打开时,页面是否渲染了
6.排查你定位的元素是否有display属性 ,有的话,就被隐藏了,看不到
7.需要单独的把这个case拿出来,不用显示等待,用time调试方式,确保原始是可以点击
8.看你的操作是否需要连贯操作
9.是不是我的定位方式写错了,没写错,按照1-8排查完还有问题,问一下开发,是否有特殊处理,如:js动态处理
封装pyse