18年selenium3+python3+unittest自动化测试教程(上)

第一章 自动化测试课程介绍和课程大纲php

一、自动化测试课程介绍css

简介:讲解什么是自动化测试和课程大纲讲解,课程须要的基础和学后的水平html

python3.7+selenium3前端

pycharmjava

第二章自动化测试相关软件安装python

一、自动测试工具selenium介绍linux

简介:介绍selenium自动化测试工具git

为何用selenium工具 1 -> 2 -> 3github

一、主流,各大公司都有用,开源免费社区活跃web

二、支持主流浏览器 火狐FireFox、谷歌chrome、IE(不建议)

三、支持多个语言,如python、java,js、php等

四、跨平台:mac、windows、linux等  64位系统


二、自动化测试环境搭建之python3安装

简介:使用windwos安装python3

一、python3安装 

1)官方文档安装 下载解压包

https://www.python.org/downloads/windows/

2)python环境变量安装

3)pip工具介绍

包管理工具


三、自动化测试环境搭建之selenium3安装

简介:使用安装包安装selenium3

方法1:cmd环境下,用pip install selenium 

方法2:下载selenium安装包手动安装 (推荐)

下载地址:https://pypi.org/project/selenium/

在解压好的目录下进行安装  python setup.py install


四、自动化测试工具selenium验证安装

简介:讲解自动化测试工具selenium安装准确性

下载火狐浏览器

一、使用selenium打开firefox浏览器

须要下载对应的驱动

火狐:https://github.com/mozilla/geckodriver/releases

下载driver、拷贝到浏览器安装路径、配置环境变量

配置环境变量,须要重启cmd窗口

from selenium import webdriver

driver = webdriver.Firefox()

driver.get("http://www.baidu.com")


五、前端知识讲解和工具安装使用

简介:讲解前端基础知识和推荐安装的工具

sublime  / cmder  /   chrome浏览器  /  firefox浏览器

必需要了解的前端基础知识:

html: 网页基础,用于显示数据

js: 网页脚本,控制页面的数据

css: 用于控制文件样式

xml: 用来传输和存储数据

json: 用来传输和存储数据

http: 网络请求协议

xpath:


第三章 测试核心理论知识-(工做面试必备)

一、必备知识之软件开发生命周期

简介:讲解软件开发的生命周期

一、测试人员须要全程参与

需求调研-》需求分析评审-》软件架构设计-》编码-》单元测试-》集成测试-》系统测试-》预发布系统测试-》上线

测试人员要求开发人员写单元测试

把控时间点、风险点

接口文档不完善(更新了需求功能,不及时更新接口文档)


二、测试相关知识分类讲解

简介: 测试分类讲解

黑盒测试(功能测试):功能符合用户的需求:

白盒测试:知道里面的逻辑,验证符合用户的需求

冒烟测试:主功能、主路径测试

自动化测试: 人工测试转为工具自动执行(没有谁取代谁,有些场景适合自动化测试,有些场景适合手工测试)

性能测试:模拟多种峰值和负载去测试各项性能指标 jmeter、loadrunner


三、自动化测试和手工测试优缺点

简介:介绍何时须要用到自动化测试和何时用手工测试

一、自动化测试方便,自动验证功能是否有问题

二、更好的利用自有,节约人力成本

三、覆盖更全,增长软件的稳定性

场景:

软件需求变动少,项目周期长,稳定性要强,环境要隔离独立(开发一套环境、测试一套环境)

若是整个系统需求变动多,只能抽取部分功能作自动化测试

语言选择:

python  java   ruby  php

打造本身的惟一性


第四章 自动测试selenium精讲实战

一、selenium基础实战之定位网页元素技巧上集

简介:讲解使用selenium定位网页元素,

find_element_by_id,find_element_by_name,find_element_by_class_name

一、开启浏览器

browser = webdriver.Firefox();

二、打开网页

browser.get("http://baidu.com")

使用python判断是否正确

browser.title 或者 browser.current_url

三、定位元素的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通常在网页都至少会有其中的一种

四、定位到元素后的方法

clear() //清空

send_keys() // 输入

back()  //后退页面

maximize_window() // 最大化窗口

click()   //点击事件,点击按钮,超连接

submit() //提交表单

五、定位到元素后的属性

tag_name  //标签名

text  //文本内容 


二、selenium基础实战之定位网页元素技巧下集

简介:讲解使用selenium定位网页元素,

一、tag name:find_element_by_tag_name() 经过标签名去定位,用的少,如find_element_by_tag_name("div")

二、link text: find_element_by_link_text() 超连接内容定位,元素内容

如  <a href="#">xxx </a>,则find_element_by_link_text("xxx")

from time import sleep 

sleep(5)

三、partial link text:find_element_by_partial_link_text() 超连接内容定位,模糊匹配,和上面相似

比较难下面的两种,下节课讲解

xpath:

css selector


三、selenium实战定位网页元素之CSS定位

简介:讲解使用css定位网页元素

一、css selector:find_element_by_css_selector()

根据CSS属性定位,通常class是用.标记,id是用#标记,定位方式也会比xpath快

如 find_element_by_css_selector('input[id=\'search\']')   // 规则:  元素[属性=值]

技巧:经过firebug的拷贝css路径

路径:审查元素-》右键-》复制-》css选择器


四、selenium实战定位网页元素之xpath定位

简介:讲解使用xpath定位网页元素

一、xpath语法:http://www.w3school.com.cn/xpath/xpath_syntax.asp

注意 :  ”//“ 是所有的意思,即全文扫描,  ”/“ 的相邻的意思, *是全部元素, ”..“是元素的父节点, "."是当前节点

二、xpath :find_element_by_xpath()xpath是XML路径语言,经过元素的路径来完成对元素的查找,HTML就是XML的一种实现方式,在FriePath插件里copy对应的xpath地址

绝对路径定位:从<html>标签开始依次往下进行查找

相对路径:利用元素属性来进行xpath定位

技巧:经过firebug的拷贝css路径

8种选择器注意问题:若是定位元素报错,缘由以下

一、根据定位取不到

二、多个元素根据下标超出范围,没有0,从1开始

解决办法:换其余方式定位元素


第五章 selenium实战之模拟事件处理

一、自动化测试实战之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) 发送某个键到指定元素


二、鼠标事件实战之hover菜单栏弹出

简介:鼠标事件之菜单栏hover弹出

一、

#引入 ActionChains 类

from selenium.webdriver.common.action_chains import ActionChains

二、move_to_element(to_element) 鼠标移动到某个元素

#对定位到的元素执行鼠标移动到上面的操做

ActionChains(driver).move_to_element(ele1).perform()


三、多知识点综合实战之模拟用户登陆

简介:讲解使用selenium模拟登陆小D课堂,并选择课程

一、多知识点实战

二、查找登陆框-》输入用户名和密码-》触发登陆-》判断登陆是否成功-》打印结果


四、自动化测试实战之网页等待时间

简介:讲解自动化测试的等待时间

一、为何须要等待时间--》等系统稳定

网页须要加载对应的资源文件,页面渲染,窗口处理等等

二、自动化测试经常使用的等待时间

强制等待 : (本身调试代码看效果)

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

结论: 隐性等待和显性等待能够同时用,等待的最长时间取二者之中的较大者

相关文章
相关标签/搜索