18年selenium3+python3+unittest自动化测试教程(上)
第一章 自动化测试课程介绍和课程大纲
1、自动化测试课程介绍
简介:讲解什么是自动化测试和课程大纲讲解,课程需要的基础和学后的水平
python3.7+selenium3
pycharm
第二章自动化测试相关软件安装
1、自动测试工具selenium介绍
简介:介绍selenium自动化测试工具
为什么用selenium工具 1 -> 2 -> 3
1、主流,各大公司都有用,开源免费社区活跃
2、支持主流浏览器 火狐FireFox、谷歌chrome、IE(不建议)
3、支持多个语言,如python、java,js、php等
4、跨平台:mac、windows、linux等 64位系统
2、自动化测试环境搭建之python3安装
简介:使用windwos安装python3
1、python3安装
1)官方文档安装 下载解压包
https://www.python.org/downloads/windows/
2)python环境变量安装
3)pip工具介绍
包管理工具
3、自动化测试环境搭建之selenium3安装
简介:使用安装包安装selenium3
方法1:cmd环境下,用pip install selenium
方法2:下载selenium安装包手动安装 (推荐)
下载地址:https://pypi.org/project/selenium/
在解压好的目录下进行安装 python setup.py install
4、自动化测试工具selenium验证安装
简介:讲解自动化测试工具selenium安装准确性
下载火狐浏览器
1、使用selenium打开firefox浏览器
需要下载对应的驱动
火狐:https://github.com/mozilla/geckodriver/releases
下载driver、拷贝到浏览器安装路径、配置环境变量
配置环境变量,需要重启cmd窗口
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
5、前端知识讲解和工具安装使用
简介:讲解前端基础知识和推荐安装的工具
sublime / cmder / chrome浏览器 / firefox浏览器
必须要了解的前端基础知识:
html: 网页基础,用于显示数据
js: 网页脚本,控制页面的数据
css: 用于控制文件样式
xml: 用来传输和存储数据
json: 用来传输和存储数据
http: 网络请求协议
xpath:
第三章 测试核心理论知识-(工作面试必备)
1、必备知识之软件开发生命周期
简介:讲解软件开发的生命周期
1、测试人员需要全程参与
需求调研-》需求分析评审-》软件架构设计-》编码-》单元测试-》集成测试-》系统测试-》预发布系统测试-》上线
测试人员要求开发人员写单元测试
把控时间点、风险点
接口文档不完善(更新了需求功能,不及时更新接口文档)
2、测试相关知识分类讲解
简介: 测试分类讲解
黑盒测试(功能测试):功能符合用户的需求:
白盒测试:知道里面的逻辑,验证符合用户的需求
冒烟测试:主功能、主路径测试
自动化测试: 人工测试转为工具自动执行(没有谁取代谁,有些场景适合自动化测试,有些场景适合手工测试)
性能测试:模拟多种峰值和负载去测试各项性能指标 jmeter、loadrunner
3、自动化测试和手工测试优缺点
简介:介绍什么时候需要用到自动化测试和什么时候用手工测试
1、自动化测试方便,自动验证功能是否有问题
2、更好的利用自有,节约人力成本
3、覆盖更全,增加软件的稳定性
场景:
软件需求变更少,项目周期长,稳定性要强,环境要隔离独立(开发一套环境、测试一套环境)
如果整个系统需求变更多,只能抽取部分功能做自动化测试
语言选择:
python java ruby php
打造自己的唯一性
第四章 自动测试selenium精讲实战
1、selenium基础实战之定位网页元素技巧上集
简介:讲解使用selenium定位网页元素,
find_element_by_id,find_element_by_name,find_element_by_class_name
1、开启浏览器
browser = webdriver.Firefox();
2、打开网页
browser.get("http://baidu.com")
使用python判断是否正确
browser.title 或者 browser.current_url
3、定位元素的8种方法,(!!!!一定要唯一)
id: find_element_by_id() 采用id属性进行定位
name: find_element_by_name() 定位方式和id定位相似,id、name和class一般在网页都至少会有其中的一种
class name: find_element_by_class_name() 定位方式和id定位相似,id、name和class一般在网页都至少会有其中的一种
4、定位到元素后的方法
clear() //清空
send_keys() // 输入
back() //后退页面
maximize_window() // 最大化窗口
click() //点击事件,点击按钮,超链接
submit() //提交表单
5、定位到元素后的属性
tag_name //标签名
text //文本内容
2、selenium基础实战之定位网页元素技巧下集
简介:讲解使用selenium定位网页元素,
1、tag name:find_element_by_tag_name() 通过标签名去定位,用的少,如find_element_by_tag_name("div")
2、link text: find_element_by_link_text() 超链接内容定位,元素内容
如 <a href="#">xxx </a>,则find_element_by_link_text("xxx")
from time import sleep
sleep(5)
3、partial link text:find_element_by_partial_link_text() 超链接内容定位,模糊匹配,和上面类似
比较难下面的两种,下节课讲解
xpath:
css selector
3、selenium实战定位网页元素之CSS定位
简介:讲解使用css定位网页元素
1、css selector:find_element_by_css_selector()
根据CSS属性定位,一般class是用.标记,id是用#标记,定位方式也会比xpath快
如 find_element_by_css_selector('input[id=\'search\']') // 规则: 元素[属性=值]
技巧:通过firebug的拷贝css路径
路径:审查元素-》右键-》复制-》css选择器
4、selenium实战定位网页元素之xpath定位
简介:讲解使用xpath定位网页元素
1、xpath语法:http://www.w3school.com.cn/xpath/xpath_syntax.asp
注意 : ”//“ 是全部的意思,即全文扫描, ”/“ 的相邻的意思, *是所有元素, ”..“是元素的父节点, "."是当前节点
2、xpath :find_element_by_xpath()xpath是XML路径语言,通过元素的路径来完成对元素的查找,HTML就是XML的一种实现方式,在FriePath插件里copy对应的xpath地址
绝对路径定位:从<html>标签开始依次往下进行查找
相对路径:利用元素属性来进行xpath定位
技巧:通过firebug的拷贝css路径
8种选择器注意问题:如果定位元素报错,原因如下
1、根据定位取不到
2、多个元素根据下标超出范围,没有0,从1开始
解决办法:换其他方式定位元素
第五章 selenium实战之模拟事件处理
1、自动化测试实战之ActionChains模拟用户行为
简介:讲解使用selenium里面的ActionChains模拟用户的行为
需求:
需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽
解决:selenium提供了一个类来处理这类事件
selenium.webdriver.common.action_chains.ActionChains(driver)
脚本:
from selenium.webdriver.common.action_chains import ActionChains
执行原理:
调用ActionChains的方法时不会立即执行,会将所有的操作按顺序存放在一个队列里,当调用perform()方法时,队列中的事件会依次执行
支持链式写法或者分步写法
ActionChains(driver).click(ele).perform()
鼠标和键盘方法列表:
perform() 执行链中的所有动作
click(on_element=None) 单击鼠标左键
context_click(on_element=None) 点击鼠标右键
double_click(on_element=None) 双击鼠标左键
move_to_element(to_element) 鼠标移动到某个元素
ele.send_keys(keys_to_send) 发送某个词到当前焦点的元素
========== 不常用 ==========
click_and_hold(on_element=None) 点击鼠标左键,不松开
release(on_element=None) 在某个元素位置松开鼠标左键
key_down(value, element=None) 按下某个键盘上的键
key_up(value, element=None) 松开某个键
drag_and_drop(source, target) 拖拽到某个元素然后松开
drag_and_drop_by_offset(source, xoffset, yoffset) 拖拽到某个坐标然后松开
move_by_offset(xoffset, yoffset) 鼠标从当前位置移动到某个坐标
move_to_element_with_offset(to_element, xoffset, yoffset) 移动到距某个元素(左上角坐标)多少距离的位置
send_keys_to_element(element, keys_to_send) 发送某个键到指定元素
2、鼠标事件实战之hover菜单栏弹出
简介:鼠标事件之菜单栏hover弹出
1、
#引入 ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains
2、move_to_element(to_element) 鼠标移动到某个元素
#对定位到的元素执行鼠标移动到上面的操作
ActionChains(driver).move_to_element(ele1).perform()
3、多知识点综合实战之模拟用户登录
简介:讲解使用selenium模拟登录小D课堂,并选择课程
1、多知识点实战
2、查找登录框-》输入用户名和密码-》触发登录-》判断登录是否成功-》打印结果
4、自动化测试实战之网页等待时间
简介:讲解自动化测试的等待时间
1、为什么需要等待时间--》等系统稳定
网页需要加载对应的资源文件,页面渲染,窗口处理等等
2、自动化测试常用的等待时间
强制等待 : (自己调试代码看效果)
from time import sleep
sleep(5) # 强制等待5秒再执行下一步,缺点是不管资源是不是完成,都必须等待
隐性等待:
driver.implicitly_wait(10) # 隐性等待,最长等10秒
#设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间截止,然后执行下一步,弊端就是程序会一直等待整个页面加载完成,到浏览器标签栏那个加载圈不再转
注意:对driver起作用,所以只要设置一次即可,没有必要到处设置
显性等待:
WebDriverWait 需要配合 until和until_not,程序每隔N秒检查一次,如果成功,则执行下一步,否则继续等待,直到超过设置的最长时间
from selenium.webdriver.support.wait import WebDriverWait
语法:WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
结论: 隐性等待和显性等待可以同时用,等待的最长时间取两者之中的较大者
更多课程资料可以查看https://xdclass.net/#/coursecatalogue?video_id=16
零基础讲解自动化测试,Selenium安装到八种元素定位,用户事件处理,等待时间处理,
到单元测试框架Unites整合实战,整合自动化测试实战等核心知识点。
赠送大量的学习资料以及干货
18年selenium3+python3+unittest自动化测试教程(上)的更多相关文章
- 18年selenium3+python3+unittest自动化测试教程(下)
第六章 自动化测试进阶实战篇幅 1.自动化测试实战进阶之网页单选性别资料实战 简介:讲解使用selenium修改input输入框和单选框 2.自动化测试之页面常见弹窗处理 简介:讲解使用seleniu ...
- Selenium3 Python3 Web自动化测试从基础到项目实战之一启动不同的浏览器及配置
在web自动化中目前selenium作为底层的自动化测试是目前运用最广的,但是各个公司都会在这个基础之上进行修改.从今天开始我们就慢慢从low代码一步一步的学习框架知识. 首先当我们测试环境有了之后我 ...
- 关于Selenium3+python3.6自动化测试中iframe切换
本篇内容主要表述以下几个问题: 1.iframe 这个是什么? 2.定位iframe 标签时遇到的几个报错总结. 3.显示等待与隐示等待的原理与优缺点. 4.无name,ID可变情况下的处理方式 5. ...
- Python3+unittest使用教程
一.直接使用TestCase 注意所有测试方法都需要以test开头.代码如下: import unittest class Test1(unittest.TestCase): @classmethod ...
- Selenium3 Python3 Web自动化测试从基础到项目实战之二浏览器的不同设置
在前面一个章节我们知道了如何通过webdriver去初始化我们得driver,然后我们只需要通过driver就能够去做我们得自动化,首先我们知道我们需要知道得是当我们有driver之后,我们剩下得就是 ...
- [Selenium3+python3.6]自动化测试3-八种元素元素定位(Firebug和firepath)
参考http://www.cnblogs.com/yoyoketang/p/6123890.html #coding=utf-8 from selenium import webdriverdri ...
- [Selenium3+python3.6]自动化测试2-入门
参考http://www.cnblogs.com/yoyoketang/p/6123890.html #coding=utf-8 #Import webdriver time module from ...
- [Selenium3+python3.6]自动化测试1-安装
参考文档: http://www.cnblogs.com/yoyoketang/p/6123890.html 安装环境: win7+Py3.6 +FF45 (ESR version) +seleniu ...
- 第9期《python3接口自动化测试》课程,6月29号开学!
2019年 第9期<python3接口自动化测试>课程,6月29号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学 本期上课时间:6月29号-7月28号,每周六.周日晚上20:3 ...
随机推荐
- jQuery autocomplete 应用
1. 引入css和js <link rel="stylesheet" href="{{ url_for('static', filename='jquery.aut ...
- [转]使用 Razor 进行递归操作
本文转自:http://www.cnblogs.com/zbw911/archive/2013/01/10/2855025.html 做一个菜单,多级的会遇到递归的问题,打算在code中做一个递归方法 ...
- 网页生命周期-PageLoad事件
PageLoad事件的作用 l 页面载入是执行的处理命令 l 可以动态创建控件 l 可以设置现有控件的属性和状态 l 常用来设置数据库的连接 l 每次页面载入都会执行
- 基于RBAC模式的权限管理系统设计概要
很多人都知道以角色为基础的权限管理设计(RBAC),但是大部分人似懂非懂,不知道完整的权限管理系统都包括哪些内容. 在此以权限管理的使用场景来说明一下完整的权限管理内容. 一是鉴权管理,即权 ...
- java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ 解决方案
//第一个异常 Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysq ...
- CentOS7卸载OpenJDK,并安装Oracle官方JDK
一.准备工具 yum源挂载已就绪:CentOS7本地yum源挂载. jdk-8u201-linux-x64.tar.gz,JDK安装包: 注意:在Linux配置JDK版本要求_jdk1.8+; 二.卸 ...
- XtraTabPage右键菜单(关闭当前页、关闭其它页、所有关闭的实现)
实现的需求: 用户习惯是一个不可忽略的东西,默认这版的dx的tab也木有右键操作,但用户习惯操作如浏览器都有右键关闭功能,故这里实现先dx的该功能 技术实现: (1)在winform的相应控件内,拖入 ...
- H5插入视频兼容主浏览器
插入视频的方法有很多种,但是有一些方法不兼容. 方法1:DW插入视频利用DW插入的视频为flv格式,操作较简单,但是代码复杂,需要浏览器支持flash插件:火狐浏览器需要手动下载flash插件,比较麻 ...
- javascript接入阿里云服务器
authInfo = r.data.authInfo[0]//后台请求的 var client = new OSS({ region: 'oss-cn-beijing',// 云账号AccessKey ...
- CSS快速入门
一.概述 层叠样式表;可以对HTML的元素,进行控制,使HTML的元素展现的效果和位置更好; 二.基本语法 css规则由两个部分构成:选择器和语句 语句规则: 1.css选择器的名称区分大小写;属性名 ...