IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 自动化测试 -> 正文阅读

[开发测试]自动化测试

定义

按照设定好的条件步骤让电脑(机器)运行

需求变动频繁,项目周期短,人工交互强的项目无法做自动化测试

自动化测试分类

UI自动化:项目稳定、界面稳定、项目后期做UI自动化、用例维护量大

接口自动化:接口稳定、项目前期介入、用例维护量少

性能自动化

selenium工具集

selenium 1.0:thoughtworks? ? ? Jason?Hugguis? ? javascript? ? seleninm1.0

seleniumRC(已经被webdriver替代)、selenium IDE(自动化脚本录制工具)、selenium GRID(分布式测试)

selenium 2.0:selenium1.0 + webdriver(浏览器驱动,根据不同浏览器定制,绕过了JavaScript环境沙箱问题)

? ? ? ? ? ? ? ? ? ? ? ? ? webdriver工作原理:脚本把指令传达给webdriver,webdriver来根据指令驱动浏览器执行脚本中的命令? ? ? ? ? ? ? ? ? ? ??

selenium 3.0:? ?增加了一些浏览器的原生驱动。

简单脚本构成(四部分):

1.脚本头部导入需要的包

2.获取浏览器驱动

3.使用浏览器驱动对需要测试的文本系统进行测试

4.测试完关闭浏览器

常用API

定位

在定位时,需要注意:定位使用的字段必须唯一

  • 使用 id 定位,id是全局唯一的
  • 使用 name 定位
  • 使用 classname 定位,classname属性易重复,不推荐使用?
  • 使用 link text 、partial link text定位,若两链接一样则不能定位
  • 使用 tag name 定位,借助标签定位且标签惟一
  • 使用 xpath 定位,一定可以定位到元素
  • 使用 ccs selector 定位
# coding = utf-8 

from selenium import webdriver 
import time 

driver = webdriver.Firefox()   #获得火狐驱动
driver.get("https://www.baidu.com/")   #打开浏览器
time.sleep(3) 

#id的定位 
driver.find_element_by_id("kw").send_keys("数据库") 
driver.find_element_by_id("su").click() 

#name的定位 
driver.find_element_by_name("wd").send_keys("SQL") 
driver.find_element_by_id("su").click() 

#classname的定位
driver.find_element_by_class_name("s_ipt").send_keys("yamy") 
driver.find_element_by_class_name("bg s_btn").click() 

#link text的定位 
driver.find_element_by_link_text("地图").click() 
#partial link text的定位
driver.find_element_by_partial_link_text("高考").click()

#tag name的定位 
driver.find_element_by_tag_name("input").send_keys("操作系统") 
driver.find_element_by_id("su").click() 

#xpath定位 
driver.find_element_by_xpath("//*[@id='kw']").send_keys("操作系统") 
driver.find_element_by_xpath("//*[@id='su']").click() 

#css selector定位 (复制css选择器/copy selector) 
driver.find_element_by_css_selector("#kw").send_keys("操作系统") 
driver.find_element_by_css_selector("#su").click() 

time.sleep(3) 
# 关闭浏览器 
driver.quit()

操作测试对象

  • click() 点击对象
  • send_keys() 模拟按键输入
  • clear() 清除对象内容
  • submit() 提交表单(如果页面源码中有submit属性(type = "submit"), 那就可以使用submit替换click)
  • text() 获取元素文本信息
from selenium import webdriver 
import time 

driver = webdriver.Chrome() 
driver.get("https://baidu.com/") 
time.sleep(3) 

# 浏览器最大化 
driver.maximize_window() 

driver.find_element_by_id("kw").send_keys("操作系统") 
driver.find_element_by_id("su").submit()

time.sleep(3) 
driver.find_element_by_id("kw").clear() #清除内容
driver.find_element_by_id("kw").send_keys("数据库") 
#提交表单
driver.find_element_by_id("su").submit() 

#获取元素文本信息
text = driver.find_element_by_id("s-bottom-layer-right").text print(text + " ") 

time.sleep(3) 
driver.quit() 

添加等待

  • 固定等待:time.sleep(X) 设置等待X秒中;
  • 智能等待:implicitly_wait(X) 等待的时间是0~X秒;

打印信息(打印上一个页面的)

  • 打印title
  • 打印url
title = driver.title 
print("title : " + title) 

url = driver.current_url 
print("url : " + url) 

# 输出结果: 
# title : 百度一下,你就知道 
# url : https://www.baidu.com/

浏览器的操作

  • 浏览器的最大化

? ? ? ? ? driver.maximize_window()

  • 浏览器的最小化

? ? ? ? ? driver.minimize_window()

  • 设置浏览器的宽(400)和高(800)

? ? ? ? ? driver.set_window_size(400, 800)

  • 控制浏览器的滚动条(通过js控制)

? ? ? ? ? ①将页面滚动条拖到最底端(10000)

? ? ? ? ? js="var q=document.documentElement.scrollTop = 10000"

? ? ? ? ?driver.execute_script(js)

? ? ? ? ? ②将页面滚动条拖到最顶端(0)

? ? ? ? ? js="var q=document.documentElement.scrollTop = 0"

? ? ? ? ?driver.execute_script(js)

  • 浏览器后退

? ? ? ? ?driver.back()

  • 浏览器前进

? ? ? ? ?.forward()

键盘事件

  • 键盘按键 ——通过send_keys()调用按键
send_keys(Keys.TAB) # TAB 
send_keys(Keys.ENTER) # 回车 

driver.find_element_by_id("u").send_keys("JY_8554") 
# 用TAB键把光标移动到密码输入框 
driver.find_element_by_id("u").send_keys(Keys.TAB) 
time.sleep(6) 
# 输入密码 
driver.find_element_by_id("p").send_keys("yunjiayu") 
# 回车登录 
driver.find_element_by_id("p").send_keys(Keys.ENTER)
  • 键盘组合键
from selenium.webdriver.common.keys import Keys

#输入框输入内容 
driver.find_element_by_id("kw").send_keys("selenium") 
time.sleep(3) 
#ctrl+a 全选输入框内容 
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a') 
time.sleep(3) 
#ctrl+x 剪切输入框内容 
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x') 
time.sleep(3) 
#输入框重新输入内容,搜索 
driver.find_element_by_id("kw").send_keys("webdriver") 
driver.find_element_by_id("su").click()

鼠标事件

ActionChains 类

  • context_click() 右击
  • double_click() 双击
  • drag_and_drop() 拖动
  • move_to_element() 移动
# 定位"百度一下"按钮 
su1 = driver.find_element_by_id("su") 
# 右击 
ActionChains(driver).context_click(su1).perform() 
# 双击 
ActionChains(driver).double_click(su1).perform() 
# 拖动 
target = driver.find_element_by_id("su") 
title = driver.find_element_by_css_selector("#\31 > h3 > a") 
ActionChains(driver).drag_and_drop(title, target).perform() 
# 移动 
ActionChains(driver).move_to_element(target).perform()

定位一组元素

定为一组元素一般用于以下场景:

  • 批量操作对象,比如将页面上所有的checkbox都勾选上
#coding=utf-8 
from selenium import webdriver 
import time 
import os 
dr = webdriver.Chrome() 
file_path = 'file:///' + os.path.abspath('checkbox.html') 
dr.get(file_path) 
# 选择页面上所有的input,然后从中过滤出所有的checkbox 并勾选之 
inputs = dr.find_elements_by_tag_name('input') 
for input in inputs: 
if input.get_attribute('type') == 'checkbox': 
input.click() 
time.sleep(2) 
dr.quit()

多层框架/窗口定位

  • switch_to_frame()
  • switch_to_window()

?多层窗口定位

  • switch_to_window

下拉框处理

  • drop_down.html:

alert、confirm、prompt 的处理

  • text 返回alert/confirm/prompt 中的文字信息
  • accept 点击确认按钮
  • dismiss 点击取消按钮,如果有的话
  • send_keys 输入值,这个alert\confirm 没有对话框就不能用了,不然会报错
  • switch_to_alert()只能处理原生的alert?

unittest框架,是Python的单元测试框架

setUp() :初始化

tearDown() :清理工作

TestCase? :以test_ 开头,运行这个类时默认执行

测试套件:存放测试用例,测试方法的一个容器

addTest:一次存放一个测试脚本里一个类的一个方法,必须提供脚本名

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-07-07 11:52:23  更:2021-07-07 11:53:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 18:19:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码