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 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 关于测试的那些事02 -> 正文阅读

[开发测试]关于测试的那些事02

目录

测试工具

1.禅道

2.selenium IDE

3.UI自动化优点

4.webdriver的原理

(1)定位元素(必须全局唯一):

(2)操作测试对象

(3)等待

(4)信息打印

??(5)对浏览器的操作

??(6)键盘事件

(7)定位一组元素

(8)多层框架定位

(9)层级定位

(10)下拉框中某个元素的定位三种方法:

(11)alter弹框的处理(对于弹出框要么关闭要么确定)

(12)div块的处理

??(13)上传文件

测试工具

1.禅道

项目管理工具,管理软件开发的整个生命周期。进行测试管理(测试需求,测试用例,测试过程,缺陷管理,报表统计)

2.selenium IDE

是一个录制自动化脚本工具(不常用,一般自己手写脚本)

3.UI自动化优点

进行大量重复测试,进行回归测试;减少人为出错;可进行繁琐测试;可进行手工测试很难执行的测试;节省资源;脚本的复用性

4.webdriver的原理

(1)启动浏览器,webdriver把浏览器绑定在一个端口,形成一个remote server(2)脚本通过command executor向server发送请求 (3) server接收到请求后,把web service命令转化为浏览器的native指令,去操作浏览器

selenium?WebDriver API

from selenium import webdriver
import time ? #导入需要的工具包
?
driver = webdriver.Chrome() ?#获取浏览器的驱动尽量用谷歌,火狐还需要单独配置
driver.get("https://www.baidu.com/") ?#从谷歌中自动打开百度
time.sleep(3)
driver.find_element_by_id("kw").send_keys("博君一肖") ?#在百度右击检查,鼠标滑到输入框,看对应的id是什么  find_element_by_id定位元素
time.sleep(3)
driver.find_element_by_id("su").click()
time.sleep(3)
driver.quit() ?#关闭浏览器driver.close()

(1)定位元素(必须全局唯一):

tag_name,(一组元素,find_elements_...) name(不一定), id(肯定唯一), class_name, link_test(仅限于链接), partial_link_test, xpath(右击对应的那一行代码可以直接copy xpath) , css_selector(如前一个)

(2)操作测试对象

send_keys():向元素发送信息

click():点击元素

submit():提交表单

clear():清除元素的内容

text:获取元素的内容

(3)等待

固定等待: 必须等够该时间 使用这种方法时如果页面中元素还没有加载出来并且时间已经到了的时候,会无法定位到元素,导致无法进行接下来的操作

time.sleep(3)

隐式等待(智能等待):等待页面上的元素都加载出来后立刻执行下一个指令,未必会等待那么长时间

driver.implicitly_wait(10)

(4)信息打印

打印title/url:

title = driver.title
print(title)
url = driver.current_url
print(url)

(5)对浏览器的操作

浏览器的最大化:

driver.maximize_window()

设置浏览器的宽和高:

driver.set_window_size(400, 1000)

浏览器的前进和后退:

driver.back()
driver.forward()

浏览器滚动条的控制:

js0 = "var q=document.documentElement.scrollTop=10000"
driver.execute_script(js0)#把滚动条拉至最低端
?
js1 = "var q=document.documentElement.scrollTop=0"
driver.execute_script(js1)#把滚动条拉至最顶端

(6)键盘事件

要想进行键盘操作,必须先导入包(所有的键盘操作要建立在定位到元素基础上)

from selenium.webdriver.common.keys import Keys

在需要登陆的网站时,可以直接输入用户名和密码自动登录

driver.find_element_by_id("account").send_keys("admin")
#使用tab键将焦点定位到用户名
driver.find_element_by_id("account").send_keys(Keys.TAB)
time.sleep(4)
driver.find_element_by_name("password").send_keys("123")
?
#用Enter键直接登录
driver.find_element_by_name("password").send_keys(Keys.ENTER)

组合键:导入工具包

from selenium.webdriver.common.action_chains import ActionChains
send_keys(Keys.Control,'a') #全选
send_keys(Keys.Control,'x') #剪切
ActionChains(driver).context_click(b).perform()#右击
ActionChains(driver).double_click(b).perform()#双击
#先定位到该元素,再把鼠标移动该元素上
action=driver.find_element_by_link_text("name")
ActionChains(driver).move_to_element(action).perform()

(7)定位一组元素

测试内容,自己写了一个html页面,其中有两个多选的checkbox,想要自动化测试,一次性选中这两个

a.先在浏览器打开这个html页面

导如包:import os

拼成一个url: file +/// +文件绝对路径

b.然后根据id定位元素(两个复选框)或者先定位出同一类元素,再根据定位元素的具体特征及逆行操作

url = "file:///" + os.path.abspath("C:/.../...html")
driver.get(url)
#第一种方法,但是太麻烦,如果复选框有很多代码冗余
driver.find_element_by_id("c1").click()
driver.find_element_by_id("c2").click()
#第二种方法,先定位出input类型的,在定位type是checkbox的
driver.find_elements_by_tag_name("input")
for button in buttons:
 ? ?if button.get_attribute('type')=='checkbox':
 ? ? ? ?button.click()
time.sleep(6)

(8)多层框架定位

a.如果要定位一个层级框架中的元素,必须先调到这个框架层级

b.如果要定位到某一个层级,必须从默认页面跳转

#从默认页面到f1
driver.switch_to.frame("f1")
#回到默认页面
driver.switch_to.default_content()

default content-->f1 :√ f1-->f2:√ f2-->f1:× default content-->f2:×

(9)层级定位

#定位link1
driver.find_element_by_link_text("link1").click()
driver.implicitly_wait(10)
#定位到Another action
action=driver.find_element_by_link_text("Another action")
#把鼠标移动到Another action上
ActionChains(driver).move_to_element(action).perform()

(10)下拉框中某个元素的定位三种方法:

a.直接用xpath定位

b.先定位出一组元素(tag name等),再根据元素属性筛选,再进行具体操作

c.先定位出一组元素(tag name等),通过数组下标定位

#第一种
driver.find_element_by_xpath("...").click()
#第二种
options=driver.find_elements_by_tag_name("option")
for option in options: #该元素的value为10.69
 ? ?if option.get_attribute('value') == '10.69':
 ? ? ? ?option.click()
#第三种
options=driver.find_elements_by_tag_name("option")
options[2].click() #该元素在数组中下标为2

(11)alter弹框的处理(对于弹出框要么关闭要么确定)

#先定位到元素,点击,使得弹框出现
driver.find_element_by_id("tooltip").click()
time.sleep(3)
#定位弹出框,获得弹出框的操作句柄
alert = driver.switch_to.alert
time.sleep(3)
#关闭弹出框
alert.accept()
#如果在弹出框输入相应的信息
alert.send_keys("输入的内容")
#获取弹出框内容
alert.text
#判断是否出现弹出框
from selenium.webdriver.support import expected_conditions as EC
result = EC.alert_is_present()(driver)
 ? ? ? ?if result:
 ? ? ? ? ? ?result.accept()
 ? ? ? ? ? ?print(result.txt)

(12)div块的处理

适用于页面复杂,元素非常多,没有id,并且name,或者tag name重复

首先要定位元素所在的div模块,再精准定位到元素

div1 = driver.find_element_by_class_name( "modal-body")
div1.find_element_by_link_text("click me").click()
time.sleep(4)

(13)上传文件

先定位到上传文件的按钮,再send_keys(需要上传文件的绝对路径+文件名字)

driver.find_element_by_name("file").send_keys(".....")
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-09-15 02:18:01  更:2022-09-15 02:18:03 
 
开发: 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年11日历 -2024/11/17 22:17:55-

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