zoukankan      html  css  js  c++  java
  • Lemon-Web阶段考核(三)

    1、请列举web自动化中常见的元素定位方式。

    a、id  根据id来获取元素,返回单个元素,id值一般是唯一的
    b、name  根据元素的name属性定位
    c、tagName  根据元素的标签定位
    d、className  根据元素的样式class值定位
    e、linkText  根据超链接的文本值定位
    f、partialLinkText  根据超链接的部分文本值定位
    g、cssSelector  css选择器定位
    h、xpath  通过元素的路径来定位
    

    2、如何定位属性值动态变化的元素?

    a、元素动态变化有特征:如id属性 lemonxxxxx,xxxx是随机变化的,那么可以根据xpath的contains函数来获取 --> //*[contains(@id,'lemon')]
    
    b、元素动态变化无特征:根据相对关系定位根据其附近的父节点、子节点、兄弟节点定位
    

    3、xpath中绝对路径和相对路径有什么区别?

    a、绝对定位: 元素的完整路径如:/html/body/div/div/a
    
    b、相对定位:从dom结构中的任意位置匹配  如://a
    

    4、Selenium中如何等待元素可见?

    显示等待定制等待的条件  代码如下:
    wait = WebDriverWait(driver,20)
    wait.until(expected_conditions.visibility_of_element_located(by));
    

    5、列举出web自动化中你常用的断言(验证)方式

    根据页面的URL
    根据页面的标题
    根据页面的提示信息
    根据某些元素的显示
    

    6、请说出显示等待和隐式等待的区别

    a、隐式等待:通过driver对象给所有的元素设置的全局等待,在设置的时间范围内一直不断去找元素,如果超时则会抛出异常
    
    b、显示等待:针对元素设置的等待时间,并且只对该元素有效,用来等待某个条件满足。默认会每间隔0.5秒去找元素,检查元素是否满足等待的条件,超时则会抛出异常
    

    7、在selenium运行过程中如何去动态改变元素的属性?

    通过javaScript脚本去操作dom对象
    

    8、UI自动化测试是否需要做数据库校验?

    不需要,按照测试金字塔分层,最上层为UI层,中间层为API接口层,最底层为单元测试层。我们可以在API接口层去做数据库校验,在UI层我们只需要模拟用户的操作即可。
    

    9、UI自动化测试用例如何设计?

    UI自动化测试用例是从手工测试用例中提取出来的,跟手工测试用例相比,自动化测试用例更加注重用例的严谨性,选择用例的时候遵循以下原则:
     a、优先选取覆盖产品核心功能的用例
     b、从成本考量,不要选择流程过于复杂的用例
     c、选取的用例可以是重复执行,繁琐的部分,比如字段验证、提示信息验证
     d、优先实现正向的测试用例,反向用例一般情况复杂,数量多
    

    10、为了提高UI自动化脚本的稳定性,你有做了哪些工作?

    a、尽量用相对路径的xpath表达式
    b、查找元素优先用显示等待
    c、用例与用例之间尽量避免产生依赖,用例可以独立执行
    d、用例执行结束后对测试场景进行还原,避免影响其他用例的执行
    e、脚本执行失败后加入重试机制,提升用例的稳定性
    f、尽量保证单独的测试环境,避免其他测试同步进行
    

    11、为了提高UI自动化脚本的可维护性,你有做了哪些工作?

    a、Page Object分层模式,业务和页面元素分离
    b、测试数据和用例分层,单独维护测试数据
    c、页面和用例共性提取
    d、可追溯日志
    

    12、什么是PO(Page Object)模式?

    页面对象模式,对页面进行抽象或者说建模的过程,需要把页面当作一个对象。把页面的一个个的web元素设计为页面对象的属性,把页面上的操作(如点击、输入等)设计为页面对象的行为。这样做的好处是业务和实现分开,使自动化测试脚本具备更高的可维护性。
    

    13、维护了多少条web自动化测试用例?稳定性怎么样?

    100+case(不要少于100,否则面试官会认为只是在做初级的自动化而已,应用这套框架,平均每次case的通过率在85%左右,还在持续优化中)
    

    14、web自动化用例覆盖率如何?

    80%左右,其中包括主流程场景和核心业务
    

    15、UI自动化实现你认为最困难的地方是什么?

    a、需求经常变动、脚本维护成本高
    b、特殊元素难以定位
    c、脚本执行不稳定,经常性fail
    

    16、对应登录验证码如何处理?

    a、测试环境中去除验证码
    b、自动识别验证码技术
    c、万能验证码
    d、设置cookie
    

    17、失败用例之后如何截图?

    用例的本质其实就是页面的基础操作。所以封装了basepage。在basepage当中,对每一个基本操作(如点击、输入等)都进行异常捕获,当操作失败时,使用driver的save_screenshot函数进行截图操作
    

    18、selenium中如何实现文件上传?

    a、对于input类型的元素,可以直接通过sendkeys写入文件的路径即可。
    
    b、对于不能写入路径的,可以使用第三方工具如:AutoLT
    

    19、在web自动化中,你一般完成什么类型的测试?

    冒烟测试+回归性测试
    回归性测试的部分主要是选取一些业务核心,相对比较稳定,容易实现的场景。
    

    20、请描述下你所设计的web自动化框架的特点?

    a、通过pytest单元测试框架组织/管理测试用例
    b、引入Page Object 思想对用例进行分层设计,业务和页面元素分离设计:测试用例层+页面对象层+元素定位层+测试数据层
    c、页面元素共性操作提取:basepage封装,实现实时执行日志输出、异常实时捕获,用例失败截图。对外只提供元素操作,屏蔽掉元素等待和元素查找,简化页面操作逻辑代码
    d、测试用例中,数据驱动使用
    e、logging日志引入,问题定位/追溯
    f、Allure报表,用例失败后截图
    g、用例失败重试,提高用例稳定性
    h、集成到Jenkins中,每天/每小时构建多次
    
  • 相关阅读:
    cnpm镜像安装
    wxParse解析html
    C++回调函数
    QT源码分析:QTcpServer
    QT实现支持加密的Sqlite数据库引擎
    VS2013+OpenCV3.4.2编译
    Android Tcp操作
    使用Delphi开发linux应用
    QT5.10+MinGW+OpenCV3.4.2编译
    C++ ActiveX开发的问题讨论
  • 原文地址:https://www.cnblogs.com/wsq-1/p/13219984.html
Copyright © 2011-2022 走看看