一、UI自动化相关

1. UI自动化的本质(重点)

定位元素→操作元素→模拟页面操作→断言→测试报告

2. 适合UI自动化的场景

UI自动化的前提条件

(1)需求不能频繁变动

(2)UI稳定(UI自动化就是基于UI层面的,UI界面总变化无法开展)

(3)项目周期长(UI自动化脚本编写和调试耗时,项目周期短纯手工更高效)

(4)回归测试频繁(回归测试多就会有不断的主流程功能需要回归,自动化更高效)

适用场景

(1)冒烟测试

(2)主功能回归测试

3. UI自动化的原则

(1)一个case完成一个功能测试(直接从功能测试用例里摘出可以自动化的进行标记)

(2)一个脚本是一个完整的业务场景

(3)每个脚本可以独立运行,没有依赖关系

(4)设计合适的检查点

(5)设计良好的框架

4. UI自动化的覆盖率

覆盖率是根据具体项目来说的,并不是说占比越高就越好,会收到项目周期,迭代次数等影响;

5. UI自动化用例从哪里来:手工测试用例中摘出可以自动化的

二、Selenium相关

1. selenium优点(重点)

(1)开源,免费

(2)支持多浏览器:firefox,Chrome(常用前两个),Opera,IE,Edge,Safari

(3)支持多平台:Windows,Linux,MAC

(4)支持多语言:Python,Java,C#,C++,JavaScript

(5)对web支持良好

(6)简单(API简单),灵活(开发语言进行驱动)

(7)支持分布式测试用例执行

2. Selenium的发展(了解即可)

(1)selenium1.0:2004年,Jason Huggins研发Selenium项目,2006年加入了Selenium RC(Remote Control)是Selenium家族的核心部分。

(2)Selenium2.0:2011年,因为Selenium和Webdriver的合并,Selenium 2.0由此诞生。简单用公式表示为:Selenium 2.0 = Selenium 1.0 + WebDriver;在Selenium 2.0中主推的是WebDriver,可以将其看作Selenium RC的替代品。因为Selenium为了保持向下的兼容性,所以在Selenium 2.0中并没有彻底地抛弃Selenium RC。

(3)Selenium3.0:2016年,selenium3.0出生

——去掉了RC,简单用公式表示为:Selenium 3.0 = Selenium 2.0 - Selenium RC(Remote Control)

——Selenium3.0只支持Java8版本以上。

——Selenium3.0中的Firefox浏览器驱动独立了,以前装完selenium2就可以驱动Firefox浏览器了,现在和Chrome一样,必须下载和设置浏览器驱动。

——支持的浏览器更多了。

RC和webdriver区别:RC是通过脚本→selenium server→浏览器→web应用

Webdriver是直接脚本→浏览器→web应用,速度更快;

3. Selenium环境搭建的一般问题:浏览器需要装对应版本的driver驱动,启动不了或者是报版本错误,一般就是下载的driver版本不对应。

三、Selenium常用API

1.八大定位方式

from selenium import webdriver

driver=webdriver.Chrome()
#以下方式均可以find_elements
driver.find_element_by_id("**")#id值定位,唯一
driver.find_element_by_name("**")#name属性,不唯一
driver.find_elements_by_class_name("**")#类名定位,class的属性值
driver.find_element_by_tag_name("**")#标签名定位,定位到第一个标签
driver.find_element_by_link_text("**")#链接文本定位,必须有链接和可跳转的文字
driver.find_element_by_partial_link_text("**")#部分链接文本定位
driver.find_element_by_xpath("**")#xpath路径表达式
driver.find_element_by_css_selector("**")#css选择器定位

重点说明:

1.复合类(class=“类名1 类名2”)即class包含超过2,不要用class_name定位,会报错

2.link_text文字可以点击跳转就可以用这个方式定位,也就是包含href属性

3.partial_ink_text传的内容必须是唯一的,否则页面定位到的元素太多

4.tag_name用标签名定位,一般不使用,同名太多

UI自动化和selenium相关以及八大定位的更多相关文章

  1. ui自动化之selenium操作(三)xpath定位

    xpath 的定位方法,非常强大.使用这种方法几乎可以定位到页面上的任意元素. 1. 什么是xpath? xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面,所以我们 ...

  2. ui自动化之selenium操作(二)定位元素-简单操作

    1. 将浏览器最大化 这里拿chrome举例,但是我在执行的时候一直报错,被坑了好久; 解决办法: 这是因为chromedriver是和chrome一一对应的,不兼容的版本就会报错: 所有chrome ...

  3. ui自动化之selenium操作(五)简单元素操作--续

    1. 多窗口切换 有时候需要在多窗口切换,webdriver提供了switch_to_window()方法支持切换窗口: from selenium import webdriver import o ...

  4. web自动化:selenium原理和元素定位(一)

    一. Selenium2 WebDriver 当Selenium2.x提出了WebDriver的概念后,它提供了完全另外的一种方式与浏览器交互 那就是利用浏览器原生的API,封装成一套更加面向对象的S ...

  5. ui自动化之selenium操作(四)简单元素操作

    1. clear() clear()方法用于清除文本输入框内的内容:一般输入框中都有默认文字,如果不清空有可能会导致字符拼接: browser.find_element(By.ID,"use ...

  6. ui自动化之selenium操作(一)环境搭建

    1. python安装: 前面步骤可以看到,这里就不赘述了(我们在这里安装的是python3) 2. selenium安装: 前面我们都已经安装好pip了,所以这里咱们直接进入到python安装路径的 ...

  7. UI自动化(selenium+python)之元素定位的三种等待方式

    前言 在UI自动化过程中,常遇到元素未找到,代码报错的情况.这种情况下,需要用等待wait. 在selenium中可以用到三种等待方式即sleep,implicitly_wait,WebDriverW ...

  8. UI自动化selenium

    1.什么是UI自动化?模拟人用代码的方式去操作页面2.为什么要做UI自动化?后期迭代的时候,老功能比较多,人工维护成本较大,重复性工作较多,这个时候就考虑因为UI自动化3.什么时候做UI自动化?项目稳 ...

  9. Python Selenium 搭建Web UI自动化

    Python搭建UI自动化环境 下载Python3 Python官网 PyCharm 环境配置 安装Python 勾选Add Python to PATH,一直下一步. 验证:CMD输入Python ...

随机推荐

  1. oracle函数 extract(c1 from d1)

    [功能]:日期/时间d1中,参数(c1)的值 [参数]:d1日期型(date)/日期时间型(timestamp),c1为字符型(参数) [参数表]:c1对应的参数表详见示例 [返回]:字符 [示例] ...

  2. Knative Eventing 中如何实现 Registry 事件注册机制

    摘要: 在最新的 Knative Eventing 0.6 版本中新增了 Registry 特性, 为什么要增加这个特性, 该特性是如何实现的.针对这些问题,希望通过本篇文章给出答案. 背景 作为事件 ...

  3. 解决 vs 出现Error MC3000 给定编码中的字符无效

    在 xaml 写中文注释,发现编译失败 Error MC3000 给定编码中的字符无效 我的 xaml 写了一句代码 <Grid> <!--林德熙--> </Grid&g ...

  4. css设置Overflow实现隐藏滚动条的同时又可以滚动

    .scroll-list ul{ white-space: nowrap; -webkit-overflow-scrolling: touch; overflow-x: auto; overflow- ...

  5. Hibernate懒加载导致json数据对象传输异常的问题---(非常重要)

    1. 异常: [console_demo][WARN] [2016-12-15 19:49:35] org.springframework.web.servlet.mvc.support.Defaul ...

  6. ngRoute

    ngRoute 模块中包含以下内容, 名称 所属 作用 ngView DIRECTIVE 提供不同路由模板插入的视图层 $routeProvider PROVIDER 提供路由配置 $route SE ...

  7. HTML静态网页--JavaScript-DOW操作

    1.DOM的基本概念 DOM是文档对象模型,这种模型为树模型:文档是指标签文档:对象是指文档中每个元素:模型是指抽象化的东西. 2.Windows对象操作 一.属性和方法: 属性(值或者子对象): o ...

  8. 什么是响应式设计?响应式设计的基本原理是什么?如何兼容低版本的 IE?

    响应式网站设计(Responsive Web design)的理念是:集中创建页面的图片排版大小,可以智能地根据用户行为以及 使用的设备环境(系统平台.屏幕尺寸.屏幕定向等)进行相对应的布局,无论用户 ...

  9. Python--day69--ORM的F查询和Q查询

    F查询和Q查询 F查询 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的比较.F() 的实例可 ...

  10. P1008 对齐输出

    题目描述 读入三个整数,按每个整数占8个字符的宽度,右对齐输出它们. 输入格式 输入的一行包含三个整数 \(a,b,c(1 \le a,b,c \le 10^6)\) . 输出格式 输出一行包含三个整 ...