Selenium 页面自动化测试 面试 问题汇总
- 1. 专业技术
在学习完Selenium的大部分接口或者方法之后,你可能会去面试自动化测试,主要是Selenium的自动化测试。下面这些问题总结,可能会对你有所帮助。
- 什么是Selenium?
Selenium是一个开源的web自动化测试框架,主要是基于web uI的自动化测试。现在的版本,逐步增加了对移动端的自动化测试。Selenium支持多种语言进行开发自动化测试脚本,有Java,python,C#,Javascript等等。Selenium支持跨浏览器平台测试。
- Selenium是否支持桌面应用软件的自动化测试。
Selenium不支持桌面软件的自动化测试,Selenium是根据网页元素的属性才定位元素,而其他桌面软件自动化测试工具是根据桌面元素的位置来定位元素,当然现在也有根据桌面元素的属性来定位的
- Selenium是否支持用例的执行的引擎
引擎好比就是一个发动机。Selenium是没有关于测试用例和测试套件管理和执行的模块。我们需要借助第三方单元测试框架来实现用例管理和用例的执行。例如Java中有Junit或者testNG,Python中有unittest单元测试框架。
- Seleinum是否有读取excel文件的库
没有,这里需要用到第三方工具。例如Apache POI插件
- Selenium有哪些组件
最早的有Selenium IDE,IDE只支持安装在fiefox上一个插件,支持录制自动化脚本。还有remote RC,和Grid 和webdriver。我们一般最重要的就是使用webdriver。
- Selenium有什么限制或者缺陷
除了基于web的软件和mobile的程序,selenium不支持桌面软件自动化测试。软件测试报告,和用例管理只能依赖第三方插件,例如Junit/TestNG和unittest。由于它是免费的软件,所以没有供应商去提供支持和服务,有问题,只能求助selenium社区。还有一个就是,selenium入门门槛可能有点高,需要具备一定编程语言基础的才能玩转
- 在selenium中,有哪些不同定位元素方法
ID/className/Name/LinkText/PartialLinkText/Xpath/CSS selector
- 什么是imlicitlyWait
imlicitlyWait是隐式等待,一般在查找元素的时候使用。例如,我设置一个查找元素最大时间为10秒,使用了imlicitlyWait后,如果第一次没有找到元素,会在10秒之内不断循环去找元素,知道超过10秒,报超时错误。
- 什么是线程等待
有时候,我们需要强制设置线程等待,Thread.sleep(2000),driver这个实例,就是当前的线程。
- 你能解释下Selenium这个框架吗?
- 你写的测试脚本能在不同浏览器上运行吗,支持跨浏览器平台吗?
这里出现了跨浏览器平台的概念,就是写一个测试用例,可以在主流的几个浏览器跑起来。 是的,我写的测试用例能在IE,火狐和谷歌这三种浏览器上运行。主要是在windows平台上运行脚本,所以mac的safari浏览器暂时没有写过。主要实现这个跨浏览器的思想就是,把浏览器类型写到配置文件,代码里写if语句去判断配置文件的浏览器的类型,来决定用什么浏览器去执行测试用例。
- 关闭浏览器中quit和close的区别
两个都可以实现退出浏览器session功能,close是关闭你当前聚焦的tab页面,而quit是关闭全部浏览器tab页面,并退出浏览器session。知道这两个区别,我们就知道quit一般用在结束测试之前的操作,close用在执行用例过程中关闭某一个页面的操作
- 在日历这种web 表单你是如何处理的?
首先要分析当前网页试用日历插件的前端代码,看看能不能通过元素定位,点击日期实现,如果不能,可能需要借助javascript。还有些日历控件一个文本输入框,可以直接sendKeys()方法来实现传入一个时间的数据。
- 如何处理下拉菜单?
通常我们也可以通过Click方法来点击下拉菜单里面的元素,还有一种方法,在Selenium中有一个类叫Select,支持这种下拉菜单交互的操作。
基本使用语法是这样的:
Select Se=new Select(element);
Se.selectByIndex(index);
Se.selectByvalue(value);
Se.selectByVisibleText(text);
- 怎么验证勾选框是
enable/disabled/ checked/Unchecked/
displayed/ not displayed?
- 你查找元素遇到过在Frame里面吗?你是如何处理Frame里面元素定位的?
有时候我们知道元素定位表达式没有问题,但是还是提示no
such element,那么我们就需要考虑这个元素是否在frame中。如果在,我们就需要从topwindow,通过swithcTo.Frame()方法来切换到目标frame中,可以通过frame的name和id和索引三种方法来定位frame。
- 在selenium中如何处理多窗口?
这里需要用到swithTo方法。
需要获取当前浏览器多窗口句柄,然后根据判断跳转新句柄还是旧句柄
- 如何处理alert弹窗
我们常见的alert弹窗有两种:基于windows弹窗和基于web页面弹窗
我们知道,webdriver是能够处理alert弹窗的,Selenium提供了Alert这个接口。相关操作代码如下:
// 切换到Alert
Alert alert =
driver.switchTo().alert();
// 点击弹窗上确定按钮
alert.accept();
// 点击弹窗的取消按钮
alert.dismiss()
// 获取弹窗上线上的文本文字内容
alert.getText();
// 有些弹窗还支持文本输入,这个可以把要输入字符通过sendkeys方法输入
alert.sendkeys();
- 19.
举例一下你遇到过那些异常,在selenium自动化测试过程中
1.
ElementNotSelectableException :元素不能选择异常
2. ElementNotVisibleException :元素不可见异常
3. NoSuchAttributeException :没有这样属性异常
4. NoSuchElementException:没有该元素异常
5. NoSuchFrameException :没有该frame异常
6. TimeoutException : 超时异常
7. Element not visible at this point :在当前点元素不可见
- findElement 和 FindElements有什么区别?
首先,两个都是查找元素,都支持八大元素定位方法。findElement()得到的只有一个元素,如果根据提供的元素定位方式找不到,会报noSuchElement异常。
findElements()返回的是一组元素,所以我们需要根据能够找到一组元素的表达式去定位,返回一组元素我们可以放在集合里,这样我们就可以使用集合里面的迭代方法去遍历元素,拿到元素去做其他操作。
- 如何获取页面标题,悬浮文本和错误文本,并验证?
标题,我们可以通过driver.getTitle()方法来得到一个字符串,然后使用字符串的containts方法或者equals方法去进行断言。
悬浮文本(tooltip),一般是利用Actions类,然后鼠标悬停方法,然后通过getText()方法来得到这个tooltip字符串。
错误信息,直接把这个错误字段先进行定位,然后通过getText()方法拿到错误文本,主要的断言有包含,相等,不相等,不包含,以什么开头等。
- 你是如何管理你的测试用例并执行?
写用例和管理并执行用例,我们都需要借助单元测试框架来实现,如果是Java语言一般有junit和TestNG,如果是python,常见的有unittest。
就你实际情况,说一下。例如我使用TestNG比较多,需要配置testng.xml文件来实现测试用例的执行。有时候需要配置多个testng.xml去实现不同的任务场景。再展开,可能问你一下testng框架的知识点。例如,方法依赖,用例执行优先级,数据源驱动等。
- 如何确定动态加载的元素:
- xpath或者css通过同级、父级、子级进行定位
- 介绍一下selenium2.0
Selenium2.0
= Selenium1.0 + WebDriver(也就是说Selenium2.0合并了这两个项目)
Rc是在浏览器中运行js应用,使用浏览器内置的js翻译器翻译和执行selenese命令
WebDriver是通过原生浏览器支持或浏览器扩展来直接控制浏览器。针对各浏览器而开发,避免了js安全模型导致的限制;还利用操作系统及的调用,模拟用户输入;
- 请说明selenium
2.0与3.0的区别
Selenium 2.0
=Selenium 1.0+WebDriver
Selenium 3.0舍弃rc只有driver
- 元素找不到可能的原因?
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可以用来做接口测试吗?
Selenium 页面自动化测试 面试 问题汇总的更多相关文章
- 2016年Web前端面试题目汇总
转载: 2016年Web前端面试题目汇总 以下是收集一些面试中经常会遇到的经典面试题以及自己面试过程中未解决的问题,通过对知识的整理以及经验的总结,重新巩固自身的前端基础知识,如有错误或更好的答案,欢 ...
- Selenium终极自动化测试环境搭建(一) Selenium+Eclipse+Junit+TestNG
Selenium终极自动化测试环境搭建(一)Selenium+Eclipse+Junit+TestNG 第一步 安装JDK JDk1.7. 下载地址:http://www.oracle.com/tec ...
- selenium+python自动化测试
F12: 右键 选择复制 path 在selenium+python自动化测试(一)–环境搭建中,运行了一个测试脚本,脚本内容如下: from selenium import webdriver ...
- 前端面试题目汇总摘录(JS 基础篇)
JS 基础 JavaScript 的 typeof 返回那些数据类型 object number function boolean undefined string typeof null; // o ...
- Selenium + Nightwatch 自动化测试环境搭建
首先要安装 Java 7 或更高 ,(http://www.oracle.com/technetwork/java/javase/downloads/index.html) 并且 java 命令可正常 ...
- Selenium浏览器自动化测试工具
目录 Selenium浏览器自动化测试工具 Selenium模块在爬虫中的使用 Python简单使用Selenium Selenium的基本操作 Selenium爬取动态加载的数据 Selenium动 ...
- [软件测试基础2]基于selenium的自动化测试
这次上机我们主要使用Selenium进行自动化测试,首先我们需要下载selenium-java的依赖项. 若使用maven管理项目,则在.pom文件中加入如下依赖项: <dependency&g ...
- selenium + python 自动化测试环境搭建
selenium + python 自动化测试 —— 环境搭建 关于 selenium Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操 ...
- Selenium终极自动化测试环境搭建(二)Selenium+Eclipse+Python
Selenium终极自动化测试环境搭建(二)Selenium+Eclipse+Python 前面举例了Selenium+Eclipse+Junit+TestNG自动化测试环境的搭建,在前一篇的基础上, ...
随机推荐
- codevs——1003——电话连线
题目描述 Description 一个国家有n个城市.若干个城市之间有电话线连接,现在要增加m条电话线(电话线当然是双向的了),使得任意两个城市之间都直接或间接经过其他城市有电话线连接,你的程序应该能 ...
- fjwc2019 D3T2 送分题
#185. 「2019冬令营提高组」送分题 这是原题..... P3615 如厕计划 手推一推你发现,显然男性不能多于女性. 然后你或许可以发现一个神奇的性质. 对于每个序列,我们记$M$为$1$,$ ...
- golang json用法讲解
简介 json格式可以算我们日常最常用的序列化格式之一了,Go语言作为一个由Google开发,号称互联网的C语言的语言,自然也对JSON格式支持很好.但是Go语言是个强类型语言,对格式要求极其严格而J ...
- 一图解释PHPstorm代码片段设置---附官方文档(转)
参考:https://blog.csdn.net/thinkthewill/article/details/81145106 资料 设置片段[官方设置教程] 设置变量对话框[官方设置教程] phpst ...
- bzoj 4237 稻草人 - CDQ分治 - 单调栈
题目传送门 传送点I 传送点II 题目大意 平面上有$n$个点.问存在多少个矩形使得只有左下角和右上角有点. 考虑枚举左下角这个点.然后看一下是个什么情况: 嗯对,是个单调栈.但不可能暴力去求每个点右 ...
- 学习Django,http协议,
学习Django http协议 规则 ''' http协议:超文本传输协议 ①基于TCP/IP协议基础上的应用层协议,底层实现仍为socket ②基于请求-响应模式:通讯一定是从客户端开始,服务器端接 ...
- RAC +MVVM
https://blog.csdn.net/capf_sam/article/details/60960530 https://blog.csdn.net/capf_Sam/article/detai ...
- linux下安装tomcat和jdk
1.现在的linux服务器一般自带jdk,先查询是否已经安装jdk rpm -qa | grep java rpm -qa | grep jdk 如上则是没有安装,可以直接跳到步骤X,安装jdk.否则 ...
- Windows下配置Jenkins 实现自动发布maven项目至tomcat(svn+maven+tomcat)
Jenkins安装完成之后,需要我们对其配置,然后才可以实现自动部署项目. 前提 防火墙开放tomcat的8080端口 Linux(CentOS):firewall-cmd --zone=public ...
- Win32汇编学习(4):绘制文本
这次,我们将学习如何在窗口的客户区"绘制"字符串.我们还将学习关于"设备环境"的概念. 理论: "绘制"字符串 Windows 中的文本是一 ...