Selenium 页面自动化测试 面试 问题汇总

 

  1. 1.   专业技术

在学习完Selenium的大部分接口或者方法以后,你可能会去面试自动化测试,主要是Selenium的自动化测试。下面这些问题总结,可能会对你有所帮助。javascript

  1. 什么是Selenium?

Selenium是一个开源的web自动化测试框架,主要是基于web uI的自动化测试。如今的版本,逐步增长了对移动端的自动化测试。Selenium支持多种语言进行开发自动化测试脚本,有Java,python,C#,Javascript等等。Selenium支持跨浏览器平台测试。css

  1. Selenium是否支持桌面应用软件的自动化测试。

      Selenium不支持桌面软件的自动化测试,Selenium是根据网页元素的属性才定位元素,而其余桌面软件自动化测试工具是根据桌面元素的位置来定位元素,固然如今也有根据桌面元素的属性来定位的前端

  1. Selenium是否支持用例的执行的引擎

引擎比如就是一个发动机。Selenium是没有关于测试用例和测试套件管理和执行的模块。咱们须要借助第三方单元测试框架来实现用例管理和用例的执行。例如Java中有Junit或者testNG,Python中有unittest单元测试框架。java

  1. Seleinum是否有读取excel文件的库

没有,这里须要用到第三方工具。例如Apache POI插件python

  1. Selenium有哪些组件

最先的有Selenium IDE,IDE只支持安装在fiefox上一个插件,支持录制自动化脚本。还有remote RC,和Grid 和webdriver。咱们通常最重要的就是使用webdriver。web

  1. Selenium有什么限制或者缺陷

   除了基于web的软件和mobile的程序,selenium不支持桌面软件自动化测试。软件测试报告,和用例管理只能依赖第三方插件,例如Junit/TestNG和unittest。因为它是免费的软件,因此没有供应商去提供支持和服务,有问题,只能求助selenium社区。还有一个就是,selenium入门门槛可能有点高,须要具有必定编程语言基础的才能玩转面试

  1. 在selenium中,有哪些不一样定位元素方法

ID/className/Name/LinkText/PartialLinkText/Xpath/CSS selector数据库

  1. 什么是imlicitlyWait

imlicitlyWait是隐式等待,通常在查找元素的时候使用。例如,我设置一个查找元素最大时间为10秒,使用了imlicitlyWait后,若是第一次没有找到元素,会在10秒以内不断循环去找元素,知道超过10秒,报超时错误。编程

  1. 什么是线程等待

有时候,咱们须要强制设置线程等待,Thread.sleep(2000),driver这个实例,就是当前的线程。windows

  1. 你能解释下Selenium这个框架吗?
  2. 你写的测试脚本能在不一样浏览器上运行吗,支持跨浏览器平台吗?

这里出现了跨浏览器平台的概念,就是写一个测试用例,能够在主流的几个浏览器跑起来。 是的,我写的测试用例能在IE,火狐和谷歌这三种浏览器上运行。主要是在windows平台上运行脚本,因此mac的safari浏览器暂时没有写过。主要实现这个跨浏览器的思想就是,把浏览器类型写到配置文件,代码里写if语句去判断配置文件的浏览器的类型,来决定用什么浏览器去执行测试用例。

  1. 关闭浏览器中quit和close的区别

两个均可以实现退出浏览器session功能,close是关闭你当前聚焦的tab页面,而quit是关闭所有浏览器tab页面,并退出浏览器session。知道这两个区别,咱们就知道quit通常用在结束测试以前的操做,close用在执行用例过程当中关闭某一个页面的操做

  1. 在日历这种web 表单你是如何处理的?

首先要分析当前网页试用日历插件的前端代码,看看能不能经过元素定位,点击日期实现,若是不能,可能须要借助javascript。还有些日历控件一个文本输入框,能够直接sendKeys()方法来实现传入一个时间的数据。

  1. 如何处理下拉菜单?

一般咱们也能够经过Click方法来点击下拉菜单里面的元素,还有一种方法,在Selenium中有一个类叫Select,支持这种下拉菜单交互的操做。

基本使用语法是这样的:

Select Se=new Select(element);
Se.selectByIndex(index);
Se.selectByvalue(value);
Se.selectByVisibleText(text);

 

  1. 怎么验证勾选框是

enable/disabled/ checked/Unchecked/ displayed/ not displayed?

  1. 你查找元素遇到过在Frame里面吗?你是如何处理Frame里面元素定位的?

有时候咱们知道元素定位表达式没有问题,可是仍是提示no such element,那么咱们就须要考虑这个元素是否在frame中。若是在,咱们就须要从topwindow,经过swithcTo.Frame()方法来切换到目标frame中,能够经过frame的name和id和索引三种方法来定位frame。

  1. 在selenium中如何处理多窗口?

这里须要用到swithTo方法。

须要获取当前浏览器多窗口句柄,而后根据判断跳转新句柄仍是旧句柄

  1. 如何处理alert弹窗

咱们常见的alert弹窗有两种:基于windows弹窗和基于web页面弹窗

咱们知道,webdriver是可以处理alert弹窗的,Selenium提供了Alert这个接口。相关操做代码以下:

 

// 切换到Alert

Alert alert = driver.switchTo().alert();

// 点击弹窗上肯定按钮

alert.accept();

// 点击弹窗的取消按钮
alert.dismiss()


// 获取弹窗上线上的文本文字内容
alert.getText();


// 有些弹窗还支持文本输入,这个能够把要输入字符经过sendkeys方法输入
alert.sendkeys();

 

  1. 19.  举例一下你遇到过那些异常,在selenium自动化测试过程当中

1. ElementNotSelectableException :元素不能选择异常
2. ElementNotVisibleException :元素不可见异常
3. NoSuchAttributeException :没有这样属性异常
4. NoSuchElementException:没有该元素异常
5. NoSuchFrameException :没有该frame异常
6. TimeoutException : 超时异常
7. Element not visible at this point  :在当前点元素不可见

  1. findElement 和 FindElements有什么区别?

首先,两个都是查找元素,都支持八大元素定位方法。findElement()获得的只有一个元素,若是根据提供的元素定位方式找不到,会报noSuchElement异常。

 findElements()返回的是一组元素,因此咱们须要根据可以找到一组元素的表达式去定位,返回一组元素咱们能够放在集合里,这样咱们就可使用集合里面的迭代方法去遍历元素,拿到元素去作其余操做。

  1. 如何获取页面标题,悬浮文本和错误文本,并验证?

标题,咱们能够经过driver.getTitle()方法来获得一个字符串,而后使用字符串的containts方法或者equals方法去进行断言。

悬浮文本(tooltip),通常是利用Actions类,而后鼠标悬停方法,而后经过getText()方法来获得这个tooltip字符串。

 

错误信息,直接把这个错误字段先进行定位,而后经过getText()方法拿到错误文本,主要的断言有包含,相等,不相等,不包含,以什么开头等。

  1. 你是如何管理你的测试用例并执行?

写用例和管理并执行用例,咱们都须要借助单元测试框架来实现,若是是Java语言通常有junit和TestNG,若是是python,常见的有unittest。

 就你实际状况,说一下。例如我使用TestNG比较多,须要配置testng.xml文件来实现测试用例的执行。有时候须要配置多个testng.xml去实现不一样的任务场景。再展开,可能问你一下testng框架的知识点。例如,方法依赖,用例执行优先级,数据源驱动等。

  1. 如何肯定动态加载的元素:

- xpath或者css经过同级、父级、子级进行定位

  1. 介绍一下selenium2.0

Selenium2.0 = Selenium1.0 + WebDriver(也就是说Selenium2.0合并了这两个项目)

Rc是在浏览器中运行js应用,使用浏览器内置的js翻译器翻译和执行selenese命令

WebDriver是经过原生浏览器支持或浏览器扩展来直接控制浏览器。针对各浏览器而开发,避免了js安全模型致使的限制;还利用操做系统及的调用,模拟用户输入;

  1. 请说明selenium 2.0与3.0的区别

Selenium 2.0 =Selenium 1.0+WebDriver

Selenium 3.0舍弃rc只有driver

  1. 元素找不到可能的缘由?

1.动态id定位不到元素

2.iframe缘由定位不到元素

3.不在同一个frame里边查找元素

4. xpath描述错误

5.点击速度过快 页面没有加载出来就须要点击页面上的元素

6.firefox安全性强,不容许跨域调用出现报错

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

 

selenium中hidden或者是display = none的元素是否能够定位到?

 

selenium中如何保证操做元素的成功率?也就是说如何保证我点击的元素必定是能够点击的?

 

如何提升selenium脚本的执行速度?

 

用例在运行过程当中常常会出现不稳定的状况,也就是说此次能够经过,下次就没办法经过了,如何去提高用例的稳定性?

 

你的自动化用例的执行策略是什么?

 

什么是持续集成?

 

自动化测试的时候是否是须要链接数据库作数据校验?

 

id,name,clas,x path, css selector这些属性,你最偏心哪种,为何?

 

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

 

如何去定位属性动态变化的元素?

 

点击连接之后,selenium是否会自动等待该页面加载完毕?

 

webdriver client的原理是什么?

 

webdriver的协议是什么?

 

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

 

什么是page object设计模式?

 

什么是page factory设计模式?

 

怎样去选择一个下拉框中的value=xx的option?

 

如何在定位元素后高亮元素(以调试为目的)?

什么是断言?

若是你进行自动化测试方案的选型,你会选择哪一种语言,java,js,python仍是ruby?

page object设置模式中,是否须要在page里定位的方法中加上断言?

page object设计模式中,如何实现页面的跳转?

自动化测试用例从哪里来?

你以为自动化测试最大的缺陷是什么?

什么是分层测试?

webdriver能够用来作接口测试吗?

相关文章
相关标签/搜索