1.如何判断元素存在?
答:Selenium找不道元素会报Nosuchelementexception,iselementpresent方法可以判断
2.如何判断元素是否出现?
答:两种情况,一,元素不存在,二,元素存在,但是是hidden状态,可以先判断元素是否存在,再判断是否displayed
3.hidden或者 display==none是否可以定位到?
答:不能,除非用js去掉display==none属性
4.Selenium中如何保证元素的成功率?如何保证元素是可以被点击的
答:
- 封装find方法实现waitforelementpresent
- 操作元素之前,保证元素可见,最大化窗口,如何当前需要滚动才能展示元素,则滚动到该元素显示,然后再进行操作
- 不同的方式定位,expectconditions判断方法封装,循环判断页面元素出现后再操作
- 与开发人员沟通,页面元素加上唯一的id或者name等
5.如何定位页面上动态加载的元素?
答:触发动态事件,然后findelement,
如果是动态菜单,需要一级一级find(js)实现
6.如何定位属性动态变化的元素?
答:属性动态变化是指该element 没有固定的属性值,可以利用xpath轴定位实现, parent/following-sibling/prencent-sibling等
另外也可以尝试findbyelements遍历
7.点击链接后,selenium是否会自动等待页面加载完成
答:不会,所以等待页面加载完成再查找元素
8.自动化测试是否需要链接数据库?
答:1.一般来说,UI自动化不需要,2.接口测试需要,从数据库层面来进行数据校验可以更方便验证系统的数据是否正确
9.有几种元素定位方式,分别是?你最偏爱哪一种,为什么?
答:8种xpath,css,id,name,tagname linktext partial text class name,
最偏爱css,因为前端也会使用它来定位元素,几乎是无所不能的,xpath也是同样的道理,比较通用,一般使用id,name,css,xpath这样的顺序
10.怎么提高selenium,脚本的自动化执行效率
答案:
- 减少强制等待sleep的使用,减少使用Implicitlywait
- 多使用selenium的webdriverwait/ Fluentwait,这样可以优化等待时间
- 减少不必要的操作步骤,需要三四步打开测试页面的情况下,可以使用网址来打开
- 中断页面加载,如果加载内容过多,我们可以查看一下加载慢的原因,如果加载的内容不影响测试,就设置超时时间,中断页面加载
- 使用性能好的电脑