selenium问题总结

1、selenium中如何判断元素是否存在

答:selenium中没有提供原生的方法判断元素是否存在,一般我们可以通过定位元素+异常捕获的方式判断


2、selenium中的hidden或者是display=none的元素是否可以定位到

答:不可以,selenium不能定位不可见的元素。display=none的元素实际上是不可见的元素

3、selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定可以点击的?

答:1)被点击的元素一定要占一定的空间,因为selenium默认会去点这个元素的中心点,不占空间的元素算不出来中心点

2)被点击的 元素不能被其他元素遮挡

3)被点击的元素不能再viewport之外,也就是说如果元素必须是可见的或者通过滚动条操作使得元素可见

4)使用element.is_enable()(python代码)判断元素是否可以被点击,如果返回false证明元素可能被灰化了,这时候就不能点击

4、如何提高selenium脚本的执行速度?

     1)使用效率更高的语言,比如java执行速度就比python快

     2)不要盲目的加sleep,尽量使用显式等待

     3)对于Firefox,考虑使用测试专用的profile,因为每次启动浏览器的时候Firefox会创建1个新的profile,对于这个新的profile,所有的静态资源都是从服务器直接下载,而不是从缓存里加载,这就导致网络不好的时候用例运行速度特别慢的问题

      4)chrome浏览器和Safari浏览器的执行速度看上去是最快的

5、用例在运行过程中经常出现不稳定的情况,也就是说这次可以不通过,下次就没办法通过了,如何去提升用例的稳定性?

    1)测试专属profile,尽量让静态资源缓存

    2)尽量使用显式等待

    3)尽量使用测试专用环境,避免其他类型的测试同时进行,对数据造成干扰

6、自动化测试的时候需不需要连接数据库做数据校验?

    答:一般不需要,因为这是单元测试层做的事情,在自动化测试层不要为单元测试层没做的工作还债

7、如何去定位页面上动态加载的元素?

    答:显式等待

8、selenium的原理?

    1)浏览器

    2)driver:一般我们都会下载driver

    3)client:也就是我们写的代码

    解析:client其实并不知道浏览器是怎么工作的,但是driver知道,在selenium启动以后,drive其实充当了服务器的角色,跟client和浏览器通信,client根据webdriver协议发送请求给driver。driver解析请求,并在浏览器上执行相应的操作,并把执行结果返回给client,这就是client的工作原理

9、webdriver的协议是什么?

    答:WebDrive协议本身是http协议,数据传输使用json

10、启动浏览器的时候用到的是哪个webdriver协议?

    答:new session,如果创建成功,返回session和capabilities

11、什么是断言?

    答:检查点,和预期和实际结果比较

    如果预期等于实际,断言通过,测试报告上记录pass

    如果预期不等于实际,断言失败,测试报告上记录fail

12、自动化最大的缺陷

    1)实现成本高

    2)运行速度慢

    3)需要一定的代码能力才能及时维护

13、考虑:webdriver为什么不可以用来做接口测试呢?





  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值