自动化测试
  • 概念:由程序代码代替人工完成验证系统功能的过程

  • 解决的问题:

    • 回归测试

    • 压力测试

    • 兼容性测试

    • 提高测试效率,提升产品质量

  • 自动化测试分类

    • web自动化测试

    • 移动自动化测试

    • 接口自动化测试

    • 单元测试

 

  • 可行性分析:什么样的web项目适合做自动化测试

    • 需求变动不频繁

    • 项目周期要长(通常半年以上)

    • 项目需要回归测试

 

环境搭建:
  • python环境

  • selenium包安装

    • 在线安装:

      • pip install selenium 默认下载的最新版本

      • pip install selenium==“版本号”

    • 查看selenium信息

      • pip show selenium

      • pip list 查看python第三方包信息

    • 卸载

      • pip uninstall selenium

    • 离线安装步骤

      • 下载外部包

      • 拷贝解压好的离线包到.\python\Lib\site-packages

      • 打开cmd,进入.\python\Lib\site-packages目录

      • 执行python setup.py instal

  • 安装浏览器

  • 安装浏览器驱动

  

入门案例

#1.导包
import time
from selenium import webdriver
#2.实例化浏览器驱动对象
driver = webdriver.Chrome()
# driver =webdriver.Firefox() #3.打开测试网址
driver.get('测试地址')
#4.业务操作
time.sleep(3)
#5.关闭浏览器
driver.quit()

 八大元素定位

By.id  driver.find_element_by_id(id属性值)

By.name  driver.find_element_by_name(name)

By.class_name  driver.find_element_by_class_name(class其中一个属性值)

By.tag_name  driver.find_element_by_tag_name("")

超链接定位  

  driver.find_element_by_link_text(元素完整文本信息)
  driver.find_element_by_partial_link_text(元素局部文本信息)

Xpath定位  driver.find_element_by_xpath(xpath的表达式)

  //*[@属性名='属性值']

拓展:

重点需要掌握的方法://*[text()="xxx"] 文本内容是xxx的元素
定位到部分文本:断言用 find_element_by_xpath('//button/span[contains(text(), "指定文本内容")]').click()
"""
注意:xxx这个参数是元素的全部文本信息
"""
//*[contains(@attribute,'xxx')] 属性中含有xxx的元素
//*[starts-with(@attribute,'xxx')] 属性以xxx开头的元素

CSS定位策略

  #id选择 表达式:#id属性值


#class选择器 表达式:.class其中一个属性值 #元素选择器 表达式:标签名 #属性选择器 表达式:[属性名='属性值'] 标签名[属性名='属性值']
#标签名[属性名='属性值'][属性名1='属性值1']
#注意的:多个属性连接的时候中括号中间没有空格 #层级选择
#格式1:element1>element2 通过element1来定位element2,并且#element2必须为element1的直接子
"#pa>input[name='userA']"
#格式2:element1 element2 通过element1来定位element2,并且#element2为element1的后代元素
"fieldset input[name='userA']" # 拓展

input[type^='p'] type属性以p字母开头的元素
input[type$='d'] type属性以d字母结束的元素
input[type*='w'] type属性包含w字母的元素

 常见元素操作

#鼠标右键点击事件
element.click()
#模拟输入:value表示输入的字符串信息
element.send_keys(value)
#清除信息
element.clear()
浏览器操作
#窗口最大化(重点)
driver.maximize_window()
#设置窗口大小
driver.set_window_size(width,height)
#设置窗口位置
driver.set_window_position(x,y) #关闭当前驱动页面
driver.close()
#关闭整个浏览器
driver.quit()
#获取当前页面标题
driver.title
#获取当前页面地址
driver.current_url
获取元素信息
获取信息 方法 备注
获取元素文本信息 element.text  
获取元素大小 element.size  
获取元素属性信息 element.get_attribute('元素属性值')  
判断元素是否可见 element.is_displayed() span标签,权限
判断元素是否可用 element.is_enabled() 例:购物车减少数量按钮
判断元素是否选中 element.is_selected() 例:注册协议是否选中

web自动化01-自动化解决的问题-环境搭建-元素定位的更多相关文章

  1. [小北De编程手记] : Lesson 01 - Selenium For C# 之 环境搭建

    在我看来一个自动化测试平台的构建,是一种很好的了解开发语言,单元测试框架,自动化测试驱动,设计模式等等等的途径.因此,在下选择了自动化测试的这个话题来和大家分享一下本人关于软件开发和自动化测试的认识. ...

  2. Django 01 django基本介绍及环境搭建

    Django 01 django基本介绍及环境搭建 #http服务器 #用来接收用户请求,并将请求转发给web应用框架进行处理 #Web应用框架 #处理完请求后在发送给http服务器,http服务器在 ...

  3. 总结Selenium自动化测试方法(二)测试环境搭建

    (接上期内容) 二.测试环境搭建 1.安装python 现在python3.0比python2.0多了一些改进的功能(详见http://zhidao.baidu.com/link?url=3sT1g7 ...

  4. Appium+python自动化16-appium1.6在mac上环境搭建启动ios模拟器上Safari浏览器

    前言 在mac上搭建appium踩了不少坑,先是版本低了,启动后无限重启模拟器.后来全部升级最新版本,就稳稳的了. 环境准备: 1.OS版本号10.12 2.xcode版本号8.3.2 3.appiu ...

  5. Java Web项目实战第1篇之环境搭建

    写在前面的话 从今天开始一个Java Web实战项目,参考自 http://blog.csdn.net/eson_15/article/details/51277324 这个博客(非常感谢博主的分享精 ...

  6. 03 Mybatis:01.Mybatis课程介绍及环境搭建&&02.Mybatis入门案例

    mybatis框架共四天第一天:mybatis入门 mybatis的概述 mybatis的环境搭建 mybatis入门案例 -------------------------------------- ...

  7. Java Web开发SpringMVC和MyBatis框架开发环境搭建和简单有用

    1.下载SpringMVC框架架包,下载地址: 点击下载 点击打开地址如图所看到的.点击下载就可以 然后把相关的jar拷贝到lib下导入 2.MyBatis(3.4.2)下载 X-Amz-Algori ...

  8. Web安全测试学习笔记 - DVWA+PHP环境搭建

    DVWA(Damn Vulnerable Web Application),是一个用PHP编写的,作为Web安全测试练习平台的合法环境(毕竟咱不能为了练习就随便找个网站去攻击...),也就是俗称的靶场 ...

  9. JavaSE 学习笔记01丨开发前言与环境搭建、基础语法

    本蒟蒻学习过C/C++的语法,故在学习Java的过程中,会关注于C++与Java的区别.开发前言部分,看了苏星河教程中的操作步骤.而后,主要阅读了<Java核心技术 卷1 基础知识>(第8 ...

随机推荐

  1. shell中判断前一个命令是否执行成功

    ]; then echo "fail" else echo "success" fi 或者 ]; then echo "success" e ...

  2. Python函数式编程-map/reduce

    1.map map()传入的第一个参数是f,即函数对象本身. map()函数接收两个参数,一个是函数,一个是Interable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterat ...

  3. BZOJ 2321 星器

    星器 思路: 势能分析法. 假设每颗星星的势能为\(x^2+y^2\) 那么对于一行的两颗星星\((i, j), (i, k), j < k\) 它转移到\((i, j+1), (i, k-1) ...

  4. [原创]extjs htmleditor增加截图快速粘贴功能 插件

    因客户需求,需要QQ截图后,能直接粘贴到htmleditor编辑器中,不要保存本地文件再上传,再插入到编辑器,太过麻烦. 常规做法:QQ截图-->选择保存路径-->确定保存文件--> ...

  5. Spring Boot起步依赖:定制starter

    在定制我们自己的起步依赖--xxx.spring.boot.starter之前,我们先了解下什么是Spring Boot起步依赖. 起步依赖,是Spring Boot带给我们的一项重要的便利.要理解S ...

  6. 题解 洛谷P1290 【欧几里德的游戏】

    这题没必要那么麻烦,只需要推理一下即可: 假设我们有两个数\(x,y\),先把\(x\)设为较大值,\(y\)设为较小值.现在分成三种情况: \(1\).若两数为倍数关系,操作的一方赢. \(2\). ...

  7. 22 Jquery 事件

    一.概述: 当用户与浏览器进行交互时这些方法被用于注册行为生效, 并进一步处理这些注册行为. 二.绑定事件处理器 .bind() ..unbind():为一个元素绑定一个事件处理程序.3.0版本已经弃 ...

  8. 7月新的开始 - Axure学习06 - 母版的使用

    母版的使用 主导航.底部.在很多页面上都是一样的: 如果在每一个页面都写一次的化.话.是非常浪费时间的,为了方便.可以使用母版: 母版可以帮助我们将一些元素重复利用,既可以保证页面的统一性.还可以节省 ...

  9. shell 学习笔记2

    shell的常用处理:https://github.com/dylanaraps/pure-bash-bible -d作为分隔符:read xargs -t作为分隔符:sort -F作为分隔符:awk ...

  10. scoket --- 练习

    三次握手,四次挥手(面试会问) 三次握手建连 [] 最开始的时候客户端和服务器都是处于CLOSED状态.主动打开连接的为客户端,被动打开连接的是服务器. TCP服务器进程先创建传输控制块TCB,时刻准 ...