1.Selenium是否支持桌面应用软件的自动化测试。
Selenium不支持桌面软件的自动化测试,Selenium是根据网页元素的属性才定位元素,而其他桌面软件自动化测试工具是根据桌面元素的位置来定位元素,当然现在也有根据桌面元素的属性来定位的。

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

3.Seleinum是否有读取excel文件的库
没有,这里需要用到第三方工具。例如Apache POI插件。

4.Selenium有哪些组件?
最早的有Selenium IDE,IDE只支持安装在fiefox上一个插件,支持录制自动化脚本。还有
remote RC,和Grid 和webdriver。我们一般最重要的就是使用webdriver。

5.Selenium有什么限制或者缺陷
除了基于web的软件和mobile的程序,selenium不支持桌面软件自动化测试。软件测试报告,和用例管理只能依赖第三方插件,例如Junit/TestNG和unittest。由于它是免费的软件,所以没有供应商去提供支持和服务,有问题,只能求助selenium社区。还有一个就是,selenium入门门槛可能有点高,需要具备一定编程语言基础的才能玩转。

6.在selenium中,有哪些不同定位元素方法
ID/className/Name/LinkText/PartialLinkText/Xpath/CSS selector

7.什么是imlicitlyWait(隐式等待)
webdriver 会在指定的超时时间范围内不断的查找元素,直到找到元素或超时

8.什么是expliciteWait(显式等待)
通常是我们自定义的一段代码,这段代码用来等待某种条件发生后,再继续执行后续的代码

9.什么是线程等待(硬式等待)
如Thread.sleep(2000),webdriver线程强制休眠2秒钟,2秒过后,再执行后续的代码。

10.什么是pollingEvery
这个是设置个一段时间就去做一件事,例如下面设置隔一秒就去查找元素一次。
WebDriverWait wait = new WebDriverWait(driver,30);
wait.pollingEvery(1, TimeUnit.SECONDS);
driver.findElement(By.xpath(“xxxx”));

11.你写的测试脚本能在不同浏览器上运行吗,支持跨浏览器平台吗
是的,我写的测试用例能在IE,火狐和谷歌这三种浏览器上运行。主要是在windows平台上运行脚本,所以mac的safari浏览器暂时没有写过。主要实现这个跨浏览器的思想就是,把浏览器类型写到配置文件,代码里写if语句去判断配置文件的浏览器的类型,来决定用什么浏览器去执行测试用例。

12.什么是POM,为什么要使用它
POM是Page Object Model的简称,它是一种设计思想,而不是框架。大概的意思是,把一个一个页面,当做一个对象,页面的元素和元素之间操作方法就是页面对象的属性和行为,所以自然而然就用了类的思想来组织我们的页面。一般一个页面写一个类文件,这个类文件包含该页面的元素定位和业务操作方法
为了我们测试用例写的简单,清晰,我们很多时候在页面对象会封装很多业务操作方法,测试脚本只需要调用相关方法就可以。
还有一个可能和这个问题相关的面试题,如果页面元素经常发生需求变化,你是如何做,答案就是采用POM思想。好处就是只要该一个页面,我就去修改这个页面对象的元素定位和相关方法,脚本不需要修改。

13.在你做自动化过程中,遇到了什么问题吗?举例下
这个问题,不管是自动化还是任何工作,都会被问到。主要想知道你是如何解决问题的,从而推断你问题分析和解决的能力。
当然有遇到问题和挑战,主要有以下几点:
频繁地变更UI,经常要修改页面对象里面代码
运行用例报错和处理,例如元素不可见,元素找不到这样异常
测试脚本复用,尽可能多代码复用
一些新框架产生的页面元素定位问题,例如ck编辑器,动态表格等

14.举例一下你遇到过那些异常,在selenium自动化测试过程中
通过这个问题,大概知道你写过多少脚本。写脚本过程最常见的异常就是,这个元素无法找到。
常见的selenium有以下这些:

ElementNotSelectableException :元素不能选择异常
ElementNotVisibleException :元素不可见异常
NoSuchAttributeException :没有这样属性异常
NoSuchElementException:没有该元素异常
NoSuchFrameException :没有该frame异常
TimeoutException : 超时异常
Element not visible at this point :在当前点元素不可见
15 如何处理alert弹窗
我们常见的alert弹窗有两种:基于windows弹窗和基于web页面弹窗
我们知道,webdriver是能够处理alert弹窗的,Selenium提供了Alert这个接口。相关操作代码如下:
// 切换到Alert
Alert alert = driver.switchTo().alert();
// 点击弹窗上确定按钮
alert.accept();
// 点击弹窗的取消按钮
alert.dismiss()
// 获取弹窗上线上的文本文字内容
alert.getText();
// 有些弹窗还支持文本输入,这个可以把要输入字符通过sendkeys方法输入
alert.sendkeys();

16 在selenium中如何处理多窗口?
这个多窗口之间跳转处理,在实际selenium自动化测试经常遇到。就是,你点击一个链接,这个链接会在一个新的tab打开,然后你接下来要查找元素在新tab打开的页面,所以这里需要用到swithTo方法。
需要获取当前浏览器多窗口句柄,然后根据判断跳转新句柄还是旧句柄

17 你查找元素遇到过在Frame里面吗?你是如何处理Frame里面元素定位的?
有时候我们知道元素定位表达式没有问题,但是还是提示no such element,那么我们就需要考虑这个元素是否在frame中。如果在,我们就需要从topwindow,通过swithcTo.Frame()方法来切换到目标frame中,可以通过frame的name和id和索引三种方法来定位frame。

18 怎么验证勾选框是enable/disabled/ checked/Unchecked/ displayed/ not displayed?
通过以下方法来验证元素是enable 还是disable
boolean enabled = driver.findElement(By.xpath(“元素定位表达式”)).isEnabled();

通过以下方法来验证元素是select/check
boolean checked = driver.findElement(By.xpath(“元素定位表达式”)).isSelected();

通过以下方法来验证元素是dispalyed还是not display
boolean displayed = driver.findElement(By.xpath(“元素定位表达式”)).isDisplayed();

19 如何处理下拉菜单?
通常我们也可以通过Click方法来点击下拉菜单里面的元素,还有一种方法,在Selenium中有一个类叫Select,支持这种下拉菜单交互的操作。
基本使用语法是这样的:
Select Se=new Select(element);
Se.selectByIndex(index);
Se.selectByvalue(value);
Se.selectByVisibleText(text);

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

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

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

简单来说,两个都可以实现退出浏览器session功能,close是关闭你当前聚焦的tab页面,而quit是关闭全部浏览器tab页面,并退出浏览器session。知道这两个区别,我们就知道quit一般用在结束测试之前的操作,close用在执行用例过程中关闭某一个页面的操作。

22 什么是页面加载超时

Selenium中有一个 Page Load wait的方法,有时候,我们执行脚本的速度太快,但是网页程序还有一部分页面没有完全加载出来,就会遇到元素不可见或者元素找不到的异常。为了解决问题,让脚本流畅的运行,我们可以通过设置页面加载超时时间。具体代码是这个:driver.manage().timeouts().pageLoadTimeout(10,TimeUnit.SECONDS);

这行作用就是,如果页面加载超过10秒还没有完成,就抛出页面加载超时的异常。

23.什么是JavaScript Executor,你什么时候会用到这个?

JavaScript Executor是一个接口,给driver对象提供一个执行javaScript并访问和修改前端元素属性和值。
还是有比较多的场景,我们可能或者需要借助javaScript来实现:
1.元素通过现有定位表达式不能够实现点击
2.前端页面试用了ck-editor这个插件
3.处理时间日期插件(可能)
4.生成一个alert弹窗
5.拖拽滚动条
基本语法:
JavascriptExecutor js =(JavascriptExecutor) driver;
js.executeScript(Script,Arguments);

24.在Selenium中如何实现截图,如何实现用例执行失败才截图

在Selenium中提供了一个TakeScreenShot这么一个接口,这个接口提供了一个getScreenshotAs()方法可以实现全屏截图。然后我们通过java中的FileUtils来实现把这个截图拷贝到保存截图的路径。

代码举例:
File src=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
try {
// 拷贝到我们实际保存图片的路径

FileUtils.copyFile(src,new File(“C:/selenium/error.png”));
}
catch (IOException e)
{
System.out.println(e.getMessage());
}
如果要实现执行用例发现失败就自动截图,那么我们需要把这个截图方法进行封装。然后在测试代码中的catch代码块去调用这个截图方法。这个我们在POM的框架中一般是把截图方法封装到BasePage这个文件中。

25.在Selenium中如何实现拖拽滚动条?
在Selenium中通过元素定位会自动帮你拖拽到对应位置,所以是没有自带的scoll方法。但是这个是有限制,例如当前页面高度太长,默认是页上半部分,你定位的元素在页尾,这个时候可能就会报元素不可见的异常。我们就需要利用javaScript来实现拖拽页面滚动条。

我们一般可以两个方法去拖拽,一个是根据拖拽的坐标(像素单位),另外一个是根据拖拽到一个参考元素附件。

代码举例(根据元素坐标拖拽):
JavascriptExecutor jse= (JavascriptExecutor)driver;
jse.executeScript(“window.scrollBy(0,250)”, “”);

26.如何实现文件上传?
我们在web页面实现文件上传过程中,可以直接把文件在磁盘完整路径,通过sendKeys方法实现上传。如果这种方法不能实现上传,我们就可能需要借助第三方工具,我用过一个第三方工具叫autoIT.
还有一个方法是利用robot类

27.如何处理“不受信任的证书”的问题?

例如,在登录12306网站的时候,如果你没有下载和安装过这个网站的根证书,那么你就会遇到打开12306网站提示证书不受信任的拦截页面。

下面举例火狐和谷歌上处理这个问题的基本代码

火狐:
// 创建firefoxprofile
FirefoxProfile profile=new FirefoxProfile();
// 点击继续浏览不安全的网站
profile.setAcceptUntrustedCertificates(true);
// 使用带条件的profile去创建一个driver对象
WebDriver driver=new FirefoxDriver(profile);

Chrome:
// 创建类DesiredCapabilities的对象
DesiredCapabilities cap=DesiredCapabilities.chrome();
// 设置ACCEPT_SSL_CERTS 变量值为true
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
// 新建一个带capability的chromedriver对象
WebDriver driver=new ChromeDriver(cap);

28.什么是Firefox Profile?

Profile是一组文件,主要用来记录用户在火狐浏览器上的私人信息,例如书签,密码,用户首选项,下载文件夹保存路径等。简单来说,你打开火狐浏览器输入about://config,这个页面有些设置选项是可以通过profile来实现修改的。

29.如何实现鼠标悬停,键盘事件和拖拽动作?

在Webdriver中,处理键盘事件和鼠标事件,一般使用Actions类提供的方法,包括鼠标悬停,拖拽和组合键输入。

这里介绍几个方法

方法:clickAndHold()
使用场景:找到一个元素,点击鼠标左键,不放手。自己可以点击鼠标不松开试试这个场景。

方法:contentClick()
使用场景:模拟鼠标右键点击,一般右键会带出菜单来。

方法:doubelClick()
使用场景:模拟鼠标双击

方法:dragAndDrop(source,target)
使用场景:模拟从source这个位置,拖拽一个元素到target位置

键盘事件方法:keyDown(keys.ALT), keyUp(keys.SHIFT)
使用场景:点击键盘事件,分为两个动作,一个点击键盘,第二个动作是释放点击(松开)

30.在执行脚本过程,如何实现当前元素高亮显示?

这个其实就是利用javaScript去修改当前元素的背景颜色来到达高亮显示的效果,

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

标题,我们可以通过driver.getTitle()方法来得到一个字符串,然后使用字符串的containts方法或者equals方法去进行断言。

悬浮文本(tooltip),一般是利用Actions类,然后鼠标悬停方法,然后通过getText()方法来得到这个tooltip字符串。

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

32.在selenium自动化测试中,你一般完成什么类型的测试?
主要是冒烟测试和回归测试。回归测试主要写一些功能稳定,容易实现的场景,通过自动化手段去实现,节约测试时间。

33.你是如何管理你的测试用例并执行?
写用例和管理并执行用例,我们都需要借助单元测试框架来实现,如果是Java语言一般有junit和TestNG,如果是python,常见的有unittest。
就你实际情况,说一下。例如我使用TestNG比较多,需要配置testng.xml文件来实现测试用例的执行。有时候需要配置多个testng.xml去实现不同的任务场景。再展开,可能问你一下testng框架的知识点。例如,方法依赖,用例执行优先级,数据源驱动等。

34关于自动化测试报告生成?
我个人一般用TestNG原生的测试报告,也有第三方叫reportNG的插件,不过我没有实际使用过。

自动化测试题目(一)相关推荐

  1. 【测试面试】自我分析+功能+接口自动化+性能测试面试题(大全),知己知彼百战百胜......

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  2. 软件测试技能大赛学习路线(更新与5月27日)

    大纲 目录 大纲 写在开头 阶段0:前期准备 1. 阶段一:环境搭建及系统部署 1.1. 知识点 1.2. 实战 1. 阶段二:单元测试 1.1. 知识点 1.1.2. 代码走查 1.1.3. 白盒测 ...

  3. 自动化测试工程师所用软件,【自动化测试工程师(软件)软件工程师面试题目|面试经验】-看准网...

    2011.3.30:一面 早上鸡还没叫我就醒来了,在家里简单地打扮打扮,重塑个人形象,胡子长的剃,头发乱的修,然后边穿衣服边拉裤链左手拎包右手锁门地就从家里出来了. 其实,上周三的时候我就收到了面试通 ...

  4. 华为OD机考题目(自动化测试)

    目次 1.求第k长的字串的长度 2.上N阶台阶问题 3.踢出石子问题 1.求第k长的字串的长度 描述 一个字符串只包含大写字母,求其连续相同字母子串中,长度第K长的子串长度,相同字母只取 最长那个子串 ...

  5. Python + Selenium + UnitTest自动化测试面试题目整理

    1.如何使用Selenium进行自动化测试 ? 结合Python + Selenium + UnitTest 2.自动化测试框架 分层+PO模式: 包含基础封装层BasePage.PO页面对象层.Te ...

  6. 《精通自动化测试框架设计》—第2章 2.3节测试数据交互基本方法

    本节书摘来自异步社区<精通自动化测试框架设计>一书中的第2章,第2.3节测试数据交互基本方法,作者陈冬严 , 邵杰明 , 王东刚 , 蒋涛,更多章节内容可以访问云栖社区"异步社区 ...

  7. python接口自动化用例管理_python接口自动化测试(六)-unittest-单个用例管理

    前面五节主要介绍了环境搭建和requests库的使用,可以使用这些进行接口请求的发送.但是如何管理接口案例?返回结果如何自动校验?这些内容光靠上面五节是不行的,因此从本节开始我们引入python单元测 ...

  8. python自动化测试脚本可以测php吗_自动化测试,用Python还是Java?

    经常有测试新手问我:Python和Java语言,哪个更适合做自动化测试?这件事今天要好好说道说道.文章开始前,送上一波软件测试资料,希望大家在学习的过程中能顺顺利利:2020软件测试公开课程+讲义资料 ...

  9. 高考python必考题目_假如高考考python编程,这些题目你会几个呢?

    Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理 ...

最新文章

  1. java thread.await_使用Thread.Sleep进行等待的替代方法
  2. 做人工智能必看的45篇论文 | 附下载地址
  3. 洞察|一图看懂AI新基建如何落地
  4. 数字化正在使CIO职责发生变化
  5. android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件
  6. Camera TTC估计
  7. azure机器学习_如何集成SQL Server和Azure机器学习
  8. sql always on_Always On可用性组中具有发布者数据库SQL复制
  9. Tomcat服务器搭建及测试教程(1),腾讯技术官发布的“神仙文档”火爆网络
  10. 吴恩达神经网络和深度学习-学习笔记-44-交并比IoU + 非极大值抑制
  11. Thrift之代码生成器Compiler原理及源码详细解析2
  12. override 和 new 关键字的总结
  13. maplesoft maple 2020
  14. 计算机二级java难吗_计算机二级上机-计算机二级难吗?二级高级语言:分笔试和上机考试笔试90分钟, 爱问知识人...
  15. 百度热力图和高德热力图对比
  16. APP在推广之渠道为王(三 )
  17. animation css 透明度逐渐_基于CSS3实现淡入(fadeIn)淡出(fadeOut)效果
  18. Vue2 Browserslist: caniuse-lite is outdated. Please run: npx browserslist@latest --update-db
  19. 无视硬件检测直接运行Win10混合现实门户
  20. FDI-01-基于PCA的TEP故障检测

热门文章

  1. 正交函数系-工程数学笔记
  2. 创建Vue项目的步骤和流程
  3. OGRE3D引擎入门重拾
  4. 最简单的爬虫,用pandas爬取表格数据
  5. 2022年网络工程师考试知识点:广域网技术
  6. 电工学复习 【1】--电路的基本概念和基本定律
  7. 云桌面是什么意思?与堡垒机有什么区别?
  8. 码住 学网页制作需要的基本步骤都在这里
  9. PID算法原理及模板讲解
  10. MySQL数据下载安装教程