zoukankan      html  css  js  c++  java
  • selenium 自动化测试部分面试题

    页面自动化测试问题汇总

    1. 专业技术
      1. 什么是Selenium

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

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

          Selenium不支持桌面软件的自动化测试,Selenium是根据网页元素的属性(ID,class,name,text)来定位元素,而其他桌面软件自动化测试工具是根据桌面元素的位置来定位元素,当然现在也有根据桌面元素的属性来定位的

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

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

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

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

    1. Selenium有哪些组件

    最早的有Selenium IDE,IDE只支持安装在fiefox上的一个插件,支持录制自动化脚本。还有remote RC,和Grid 和webdriver。我们一般使用webdriver。

     

    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这个实例,就是当前的线程。

    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. 举例一下你遇到过那些异常,在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安全性强,不允许跨域调用出现报错

     

  • 相关阅读:
    BZOJ 1191 HNOI2006 超级英雄hero
    BZOJ 2442 Usaco2011 Open 修建草坪
    BZOJ 1812 IOI 2005 riv
    OJ 1159 holiday
    BZOJ 1491 NOI 2007 社交网络
    NOIP2014 D1 T3
    BZOJ 2423 HAOI 2010 最长公共子序列
    LCA模板
    NOIP 2015 D1T2信息传递
    数据结构
  • 原文地址:https://www.cnblogs.com/www-qcdwx-com/p/11607475.html
Copyright © 2011-2022 走看看