一、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. @loj - 2674@ 「NOI2012」美食节

    目录 @description@ @solution@ @accepted code@ @details@ @description@ CZ 市为了欢迎全国各地的同学,特地举办了一场盛大的美食节. 作 ...

  2. day3_python之函数参数

    一.形参 在定义函数时,括号内的参数称为形参,特点:形参就是变量名 def foo(x, y): # x=1,y=2 print(x) print(y) 二.实参 在调用函数时,括号内的参数成为实参, ...

  3. Top 10 open source projects of 2015

    Top 10 open source projects of 2015 Posted 15 Dec 2015Jen Wike Huger (Red Hat)Feed 188 up 31 comment ...

  4. 谈谈数据库的 ACID(转)

    一.事务 定义:所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位. 准备工作:为了说明事务的ACID原理,我们使用银行账户及资金管理的案例进行分析. 二.ACI ...

  5. 2002年NOIP普及组复赛题解

    题目涉及算法: 级数求和:入门题: 选数:搜索: 产生数:搜索.高精度: 过河卒:动态规划. 级数求和 题目链接:https://www.luogu.org/problemnew/show/P1035 ...

  6. 洛谷P3377 【模板】左偏树(可并堆) 题解

    作者:zifeiy 标签:左偏树 这篇随笔需要你在之前掌握 堆 和 二叉树 的相关知识点. 堆支持在 \(O(\log n)\) 的时间内进行插入元素.查询最值和删除最值的操作.在这里,如果最值是最小 ...

  7. hdu 1128 Self Numbers

    Self Numbers Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  8. Hibernate @OneToOne懒加载实现解决方案

    在hibernate注解(三)中,我提高过一对一(@OneToOne)懒加载失效的问题.虽然给出了解决方法,但并没有给出完整的解决方案.今天我专门针对该问题进行讨论.至于懒加载失效的原因,在之前的文章 ...

  9. [转]什么是CNN、RNN、LSTM

    . 全连层 每个神经元输入: 每个神经元输出: (通过一个激活函数) 2. RNN(Recurrent Neural Network) 与传统的神经网络不通,RNN与时间有关. 3. LSTM(Lon ...

  10. Codeforces Round #194 (Div.1 + Div. 2)

    A. Candy Bags 总糖果数\(\frac{n^2(n^2+1)}{2}\),所以每人的数量为\(\frac{n}{2}(n^2+1)\) \(n\)是偶数. B. Eight Point S ...