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中,每天/每小时构建多次

web python 维护性_Lemon-Web阶段考核(三)相关推荐

  1. web python识花_Python Web开发之初认识

    一.具备技术能力至少熟悉一种Python web框架 熟悉Python语法 熟悉数据库.缓存.消息队列等技术的使用场景.使用方法 日常能使用Linux或Mac系统工作 有性能调优经验,能快速定位问题 ...

  2. 软件测试用python一般用来做什么-Python用来做Web开发的优势有哪些

    Python是世界上最受欢迎的编码语言之一,在80年代后期首次受到ABC和Modula-3语言的影响而被概念化.从1991年的第一个版本到成为开源项目的2.0版本,它已经走了很长一段路,直到今天,它正 ...

  3. python上手--flask框架web开发实践-数据库

    这篇文章,由易而难,步骤清晰,思路讲得很明白.花两小时跟着作者稻谷先生的这篇文章走一遍,对学习python使用Flask来开发web的应用很有帮助. python上手--flask框架web开发实践 ...

  4. Python学习笔记:web开发3

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  5. Python学习笔记:web开发1

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  6. python论坛app_理解python web开发,轻松搭建web app!

    大家好,今天分享给大家的是理解python web开发,轻松搭建web app,希望大家学有所获! 因为 python代码的优雅美观且易于维护这一特点,越来越多的人选择使用 Python做web开发. ...

  7. python在线搭建教程_理解python web开发,轻松搭建web app!

    大家好,今天分享给大家的是理解python web开发,轻松搭建web app,希望大家学有所获! 因为 python代码的优雅美观且易于维护这一特点,越来越多的人选择使用 Python做web开发. ...

  8. 关于 Web 可访问性的神话

    原文地址:Myths about Web Accessibility 原文作者:Alvaro Montoro 译文出自:掘金翻译计划 原文链接:https://alvaromontoro.com/bl ...

  9. 用python写投票程序_大话python最终篇,web.py 开发的投票程序demo

    概述 开发语言         python Web开发框架  web.py 前端开发框架   vuejs+elementui 数据库              mysql 设计思路 首先是数据库设计 ...

最新文章

  1. TensorFlow练习12: 判断男声女声
  2. 小马智行L4无人车今日量产下线,这比融资更具里程碑意义
  3. 删除win10自带的旧版edge浏览器(亲测有效)
  4. Luogu P4708 画画 (Burnside引理、组合计数、划分数)
  5. 【Boost】boost库asio详解8——TCP的简单例子1
  6. 创建一个属于自己的博客
  7. 51nod 1250 排列与交换——dp
  8. C++ 面向对象(三)—— 类之间的关系
  9. qt qtableview mysql_Qt数据库编程中QTableView使用方法
  10. ArcGIS API For JS实现动态点扩散
  11. Linux磁盘管理实战
  12. jzoj 6301. 普及组
  13. EXCEL中制作省市区行政区地图
  14. 计算机怎么删除表格,EXCEL如何删除表格内容中的部分文本
  15. SSM框架的详细介绍
  16. php中超链接怎么去下划线的,html如何去掉超链接下划线?html超链接去掉下划线的方法介绍...
  17. 七年级上册计算机工作计划,七年级上册班主任工作计划
  18. JVM上篇:内存与垃圾回收篇一--JVM与Java体系结构
  19. 6.2.2 分区与副本
  20. NLP实战之textRNN中文文本分类

热门文章

  1. GOF23种设计模式(Design Pattern)总结
  2. 神经网络调参---权重对分类性能的影响
  3. 学习率对神经网络的影响-乙烷,乙烯,乙炔的分子模型试验数据对比
  4. 中秋祝福网页制作_10大中秋H5模板分享,助力吸粉10000+
  5. 【UGV】小车一些图片 麦轮版小车
  6. 3.1 基础模型-深度学习第五课《序列模型》-Stanford吴恩达教授
  7. excel 多项式拟合数据
  8. python基础2(来自廖雪峰的官方网站)
  9. 随机取若干条记录的SQL语句
  10. POJ-1201 Intervals---差分约束