UI自动化测试

UI自动化测试

1、web自动化中常见的元素定位方式?selenium如何定位元素?

有id,优先使用id定位

其次是name属性定位

再其次是css选择器定位

最后是xpath定位

tag name、class name、link text、等,基本很少用到

 

2、前端频繁变动时怎么减少维护脚本的成本?

 

3、延时等待方式有哪些?

  • sleep():强制等待,设置固定休眠时间。即使设置一定的等待时间,也不能确保一定能够定位到元素,因为我们无法知道页面加载的时间,而且这种方法通常比较浪费脚本执行时间,效率低
  • implicitly_wait():隐式等待,是设置的全局等待。在这个时间内,只有当元素被加载出来且页面被完成加载完成后,才执行下一步操作,保证了脚本的稳定性,但执行效率相对较低,因为我们往往只需要目标元素出现即可,并不需要等整个页面加载完成,而隐式等待要等待整个页面加载完才能执行下一步,浪费一定时间,为了解决这种弊端又引入了显式等待
  • WebDriverWait():显式等待,是针对于某个特定的元素设置的等待时间,在设置时间内,默认每隔一段时间检测一次当前页面某个元素是否存在,如果在规定的时间内找到了元素,则直接执行,即找到元素就执行相关操作,如果超过设置时间检测不到则抛出异常。无需等待页面完全加载,节省大量因加载无关紧要的文件而浪费的时间。默认检测频率为0.5s,默认抛出异常为:NoSuchElementException

4、selenium原理?

使用selenium实现自动化测试,主要需要3个东西

  1. 测试脚本,可以是python,java编写的脚本程序(也可以叫做client端)
  2. 浏览器驱动,这个驱动是根据不同的浏览器开发的,不同的浏览器使用不同的webdriver驱动程序,且需要对应相应的浏览器脚本
  3. 浏览器,目前selenium支持市面上大多数浏览器,如:火狐、谷歌、IE等

5、selenium工作过程?

  1. selenium client(python等语言编写的自动化测试脚本)初始化一个service服务,通过webdriver启动浏览器驱动程序 chromedriver.exe
  2. 通过RemoteWebDriver向浏览器驱动程序发送HTTP请求,浏览器驱动程序解析请求,打开浏览器,并获得sessionid,如果再次对浏览器操作需携带此id
  3. 打开浏览器,绑定特定的端口,把启动后的浏览器作为webdriver的remote server
  4. 打开浏览器后,所有的selenium的操作(访问地址,查找元素)均通过RemoteConection链接到remote server,然后使用execute方法调用request方法通过urllib3向remote server请求
  5. 浏览器通过请求的内容执行对应动作
  6. 浏览器再把执行的动作结果通过浏览器驱动程序返回给测试脚本

6、webdriver原理?

由于客户端脚本不能直接与浏览器通信,这时候可以把WebDriver当做一个翻译器,它可以把客户端代码翻译成浏览器可以识别的代码(比如js),测试脚本创建一个session,在该session中通过http请求向Webdriver发送请求,Webdriver翻译成浏览器懂得脚本传给浏览器,浏览器把执行的结果返回给Webdriver,Webdriver把返回的结果做了一些封装(一般都是json格式),然后返回给客户端,根据返回值就能判断对浏览器的操作是不是执行成功

7、你是如何搭建ui自动化框架的?

 

8、如何设计ui自动化测试用例?

 

9、ui自动化有哪些缺点?如何改进?

不稳定,页面经常变,不好定位,不适合业务复杂和频繁变动的项目

改进:在项目中尽量使用显式等待

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

selenium脚本执行速度影响因素:

网速、操作步骤的繁琐程度、页面的加载速度、脚本中设置的等待时间,一般来说,我们不单方面追求速度,一定程序上,愿意牺牲速度来保证自动化执行的稳定性

基于以上,可以从以下角度提升速度:

  1. 优化测试用例。设置等待时间的时候,少用sleep,尽量不用implicitly_wait,多用显式等待方法
  2. 减少不必要的操作步骤。如经过三四步才能打开要测试的页面的话,可以直接通过网址来打开
  3. 中断页面加载。如果加载的内容不影响我们测试,就设置超时时间,中断页面加载

11、什么是PO模式?

page object 页面对象

就将页面封装成类,需要用到的页面的元素定位和元素行为也封装进去以供调用

用例层从页面层调用操作方法,写成用例,可以做到定位给元素与脚本的分离

降低维护成本,将元素封装,与元素操作抽离开来

posted on 2022-02-24 09:39  Wuxuanlin  阅读(250)  评论(0编辑  收藏  举报