zoukankan      html  css  js  c++  java
  • Selenium Web自动化面试题总结(下篇)

    在上一篇分享中,给大家带来了selenium核心技术点在笔试/面试中的常见题型,本篇将继续深入探究自动化测试相关面试点,如果说selenium是一款web自动化测试不可缺的“武器”,那就需要安装到合适的装置上,才能尽情发挥其优势,在自动化测试中,所谓的“合适装置”即:自动化测试框架的选取,自动化框架必备面试问答将是此次分享的重点。

    Selenium WEB自动化技术深入掌握

    如何处理基于Web的弹出窗口?

    A:WebDriver中提供了专门用于处理Alert弹框的API,包含四种常用方法:

    (1) void dismiss(): 单击弹出窗口中的“取消”按钮;

    (2) void accept(): 单击弹出窗口中的“确定”按钮;

    (3) String getText(): 返回显示在Alert框中的文本;

    (4) void sendKeys(String stringToSend): 以字符串形式输入内容至Alert框中。

    Sample code:

    // 单击弹出窗口中的“确定”按钮
    Alert alert = driver.switchTo().alert();
    alert.accept();

     

    如何通过WebDriver触发鼠标悬停事件?

    A:WebDriver提供了广泛的交互应用API,用户可以利用这些API自动触发鼠标/键盘事件。Action API就是这样一种交互性应用API,它可以模拟单个用户的交互动作。

    例如我们可以通过Action API将鼠标悬停在某个下拉菜单上,然后打开其中的选项列表。

    Sample Code:

    // 初始化
    Action API
    Actions actions=new Actions(driver);

    // 鼠标悬停的到下拉菜单上

    actions.moveToElement(driver.findElement(By.id("下拉菜单的ID"))).perform();

    // 定位并点击下拉菜单中某个选项
    WebElement subLinkOption = driver.findElement(By.id("某选项的ID"));

    subLinkOption.click();

    如何获取元素的CSS属性?

    A:通过get() 方法获取web元素css的属性值。

    例如获取某web元素CSS中“font-size”的属性值:

    driver.findElement(By.id(“某元素ID“)).getCssValue(“font-size”);

     

    WebDriver中如何捕获屏幕截图?

    答:通过selenium提供的TakesScreenshot和OutputType 完成屏幕截图。

    Sample Code:

    // 获取截屏

    File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);

    // 将截屏保存到指位置

    FileUtils.copyFile(scrFile, new File("C:\CaptureScreenshot\sample.jpg"))

     

    web测试中如何验证网页标题是否正确?

    A:可以结合junit/testNG中的断言。

    // 验证页面标题内容是否正确

    assertTrue(“验证当前页面标题正确性:”,driver.getTitle().equals(“预期页面标题内容”));

    selenium如何处理基于Windows的弹出窗口?

    A:Selenium仅支持Web应用程序测试,不支持基于Windows的应用程序。但可以通过一些第三方工具处理windows弹框,例如AutoIT,Robot。

     

    什么时候应该使用Selenium Grid?

    A:Selenium Grid能在多个平台和浏览器上同时执行相同/不同的测试脚本,从而实现分布式测试执行,Selenium Grid在不同环境下执行测试脚本的特性,可以大大节省自动化测试的执行时间,大幅提高效率。

     

    列举Selenium的局限性有哪些?

    A:Selenium有以下不足之处:

    (1) Selenium仅支持基于Web的应用程序的测试;

    (2) 无法使用Selenium测试移动应用程序,可以选择Appium进行移动端功能测试;

    (3) 验证码和条形码阅读器无法使用Selenium进行测试;

    (4) Selenium本身不具有生成测试报告的功能,以JAVA为例,需要结合第三方框架如TestNG或JUnit来生成测试报告。

    自动化测试框架相关知识点技能

    自动化测试框架的优势有哪些?

    A:优势主要包括:

    (1) 代码的可重用性;

    (2) 尽可能确保最大测试覆盖率;

    (3) 场景可恢复性;

    (4) 低廉的后期维护成本;

    (5) 尽可能减少人工干预;

    (6) 自动生成测试报告。

    你了解哪些不同类型的测试框架?

    A:比较常见的测试框架种类如下:

    (1) 基于模块(module)的测试框架:这类框架将整个“被测应用程序”按逻辑性划分为若干个独立模块。对于每个模块,我们创建一个独立的测试脚本。因此,当这些测试脚本合在一起时,就构建成一个更大的测试脚本,对应了更大范围内的逻辑独立性模块;

    (2) 库级别(library)的测试框架:基本原理是先确定通用步骤,然后将它们按组进行封装,封装成库函数,任何时候,如有需要,可以在测试脚本中随时调用这些库函数;

    (3) 数据驱动(DDT)测试框架:DDT框架旨在将测试数据从业务逻辑脚本中独立出来,从而使用户可以将测试数据存储到外部数据库/配置文件中,测试数据一般按“键值”对存储居多,在测试脚本中可以通过测试数据的key, 来获取实际的value;

    (4) 关键字驱动(Key)测试框架:是对数据驱动的测试框架的扩展,从某种意义上说,它不仅将测试数据与脚本分离,还将测试脚本按业务拆分,单独封装,即每一个关键字,就是一个业务,关键字驱动下的业务拆分粒度的精细程度可按实际项目需求来确定, 例如一个简单的登录业务可以封装成一个login关键字,一个完整的购物流程同杨也能封装成一个purchase关键字。

    常见的Junit注释?

    A:Junit注释主要包含如下几种:

    (1) @Test:告知系统被注释为“@Test”的方法是一种测试方法。一个测试脚本中可以有多个测试方法;

    (2) @Before:该方法应在每个测试方法被执行之前执行;

    (3) @After:该方法应在每个测试方法之后再被执行;

    (4) @BeforeClass:此方法在当前测试类中所有测试方法执行之前,先被执行一次;

    (5) @AfterClass:此方法在当前测试类中所有测试方法都执行完毕后,最后被执行一次;

    (6) @Ignore:告知系统不执行此测试方法。

    TestNG比Junit更好吗?

    A:TestNG是一个开源代码框架,对比Junit主要优势如下:

    (1) 大大扩展了注释范围和类别;

    (2) 可以设置执行模式;

    (3) 支持并发执行测试脚本;

    (4) 可以设置测试用例依赖性。

    如何在TestNG中设置测试用例优先级?

    A:以如下代码为例,进行优先级的设置:

    import org.testng.annotations.*;public class SettingPriority {
    @Test(priority=1)public void method1() {}
    @Test(priority=2)public void method2() {}
    @Test(priority=0)public void method3() {}}

    测试执行顺序为:method3 ——》method1 ——》method2

    断言(assert)和验证(verify)之间有什么区别?

    A:断言(assert)用于检查给定条件是否满足,即True or False;假设我们断言某给定元素是否存在于页面上。如果条件为真True,则程序将执行下一个测试步骤,但如果条件为假False,则程序将停止执行,并且不再往下执行后续的测试步骤。

    验证(verify) 同样是检查给定条件是对还是错,即True or False;不同的是,不管条件是否满足,程序的执行都不会停止,即验证过程中的任何失败都不会停止当前的程序执行,并且所有测试步骤都将被执行到。

    总结

    综合上下两篇,分别从Selenium核心要点,测试框架的认知及运用等方面进行了web自动化测试中面试或笔试常被问及的技术点, 大家可以在准备相关面试前将此文当作面试备考题的一部分,在大脑中自行过一遍,相信或多或少都能帮到你。当然,成功的面试不仅需要“考前突击”,更重要的还是平日里技术经验的积累,希望本次分享能够帮到即将面试的你,通过自己的努力披荆斩棘,拿到心仪的OFFER。

  • 相关阅读:
    Single Number II
    Pascal's Triangle
    Remove Duplicates from Sorted Array
    Populating Next Right Pointers in Each Node
    Minimum Depth of Binary Tree
    Unique Paths
    Sort Colors
    Swap Nodes in Pairs
    Merge Two Sorted Lists
    Climbing Stairs
  • 原文地址:https://www.cnblogs.com/Wl55387370/p/13631259.html
Copyright © 2011-2022 走看看