第十九章

1.什么是自动化

使用测试工具 或者其他手段对软件进行测试

2.自动化测试好处

1.缩短测试周期  2.避免人为出错  3.测试信息存储  4.轻易获取覆盖率  5.实现自动或者定时执行

3.使用自动化的前提条件

1)手动测试已经完成,后期再不影响进度的前提下逐渐实现自动化

2)项目周期长,重复性的工作都交给机器去实现

3)需求稳定,项目变动不大

4)自动化测试脚本复杂度比较低

5)可重复利用

4.使用自动化测试的场景

1)频繁的回归测试

2)冒烟测试

3)传统行业需求变化不大,应用频繁

4)性能测试

5.常用工具

QTP、Selenium、RFT

6.为什么要学习元素定位

1)计算机没有智能到人的程度。

2)计算机不能像手动测试人员一样通过眼看,手操作鼠标点击,操作键盘输入。

3)计算机通过一系列计数手段找到元素(按钮、输入框、模拟键盘等)

7.元素定位的工具或手段有哪些

css选择器、xpath

8.环境搭建

1. 下载浏览器插件

2. 菜单 → 添加附件 → 设置图标 → 从文件中添加附件

9.什么是xpath

XPath即为XML路径语言,它是一种用来(标准通用标记语言的子集)在 HTML\XML 文档中查找信息的语言

10.什么是xml

XML 指可扩展标记语言(EXtensible Markup Language)

XML 是一种标记语言,很类似 HTML

XML 的设计宗旨是传输数据,而非显示数据

11.xml和html 的区别

html是用来显示数据、xml是用来传输和存储数据

12.获取元素

①/:从根节点选取  #/html/head/meta[1]第一个;[last()]最后一个元素;[last()-1]倒数第二个元素; [position()<3] 前两个元素

②//:从匹配选择的当前节点选择文档中的节点 #//link

③.选取当前节点

④..选取当前节点的父节点

⑤@:选取属性 #//meta[@name] 或者//meta[@name="referrer"]

⑥//meta[@*]:所有带有属性的meta元素

⑦//head/meta | //head/title:选取head元素的所有meta元素和title元素

⑧//meta | //title:选取文档中的所有title和meta元素

13.css选择器

13.1什么是css选择器

CSS 中,选择器是一种模式,用于选择需要添加样式的元素

13.2css选择器语法

①.info: 选择class=“info”的所有元素

②#name: 选择id=“name”的所有元素

③* :选择所有的元素

④元素1,元素2: 选择元素1和元素2的所有元素

⑤元素1 元素2: 选择元素1内部的所有元素2的元素

⑥元素1>元素2: 选择父元素为元素1的元素的所有元素2的元素

⑦[target]: 选择带有target属性的所有元素

⑧[target=blank]: 选择target="blank"的所有元素

Web自动化测试进阶

什么是框架框架(framework)是一个框子 -- 指其约束性,也是一个架子 -- 指其支撑性,是一个基本概念上的结构,用于去解决或者处理复杂的问题。

为什么使用框架1)自己从头实现太复杂

  2)使用框架能够更专注于业务逻辑,加快开发速度

  3)框架的使用能够处理更多细节问题

  4)使用人数多,稳定性,扩展性好

selenium工作原理

  4.selenium对浏览器操作

1)库的导入

from selenium import webdriver

2)创建浏览器对象

必须为大写

driver = webdriver.Firefox()

driver = webdriver.Chrome()

3)浏览器尺寸相关操作

maximize_window() 最大化

get_window_size()    获取浏览器尺寸,打印查看

set_window_size()    设置浏览器尺寸,400*400

4)浏览器位置相关操作

get_window_position() 获取浏览器位置

set_window_position(x,y)    设置浏览器位置

5)浏览器的关闭操作

close()关闭当前标签/窗口

quit()关闭所有标签/窗口

6)页面请求操作

driver.get(url)请求某个url对应的响应

refresh()刷新页面操作

back()回退到之前的页面

forward()前进到之后的页面

fromselenium import webdriver

import time

driver = webdriver.Chrome()#不可以找到,必须导入对应的驱动器

driver=webdriver.Firefox()

url1="http://www.baidu.com"

url2="https://zhuanlan.zhihu.com/"

请求第一个接口

driver.get(url1)

time.sleep(3)

刷新

driver.refresh()

driver.get(url2)

回退

driver.back()time.sleep(3)

前进driver.forward()

time.sleep(3)

driver.close()

5.selenium获取断言信息1)什么是断言

断言是编程术语,表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。

2)获取断言信息的操作

current_url 获取当前访问页面url

title 获取当前浏览器标题

page_source 获取网页源码

print(driver.current_url)

print(driver.title)

print(driver.page_source)

截图:

get_screenshot_as_png() 保存图片

data=driver.get_screenshot_as_png()

withopen("a.png","wb")asf:

f.write(data)

get_screenshot_as_file(file) 直接保存

driver.get_screenshot_as_file("b.png")

6.selenium八大元素定位from selenium import webdriver

driver=webdriver.Firefox()

url = "http://www.baidu.com"

driver.get(url)

第一种 id

ele = driver.find_element_by_id("kw")

ele.send_keys(12306) # 输入数据

from selenium.webdriver.common.by import By

ele = driver.find_element(By.ID,"kw")# ele.send_keys(12306) # 输入数据

第二种  标签名字

ele = driver.find_element_by_name("wd")

ele.send_keys(12306) # 输入数据

第三种  class

ele = driver.find_element_by_class_name("s_ipt")

ele.send_keys(12306) # 输入数据

第四种  Xpath

ele = driver.find_element_by_xpath("//*[@id='kw']")

ele.send_keys(12306) # 输入数据

第五种  css class

ele = driver.find_element_by_css_selector("#kw")

ele.send_keys(12306) # 输入数据

第六种  text

ele = driver.find_element_by_link_text("地图")

ele.click() # 输入数据

第七种:类似于模糊匹配

ele = driver.find_element_by_partial_link_text("地")

ele.click()

第八种:标签名定位,必须得保证只有一个这种名字的标签,使用下面这个搜索

url = "http://cn.bing.com/"

driver.get(url)# ele = driver.find_element_by_tag_name("input")

ele.send_keys(12306) # 输入数据

7.元素的操作对元素的相关操作,一般要先获取到元素,再调用相关方法

element = driver.find_element_by_xxx(value)

1)点击和输入

点击操作---------->element.click()

清空/输入操作:

element.clear()---------------------->清空输入框

element.send_keys(data)-------->输入数据

2)提交操作

element.submit()

8.多标签之间的切换场景:有的时候点击一个链接,新页面并非由当前页面跳转过去,而是新开一个页面打开,这种情况下,计算机需要识别多标签或窗口的情况。

1)获取所有窗口的句柄

handles = driver.window_handlers

调用该方法会得到一个列表,在selenium运行过程中的每一个窗口都有一个对应的值存放在里面。

2)通过窗口的句柄进入的窗口

driver.switch_to_window(handles[n])

driver.switch_to.window(handles[n])

通过窗口句柄激活进入某一窗口

案例:

58同城租房信息:http://bj.58.com

使用句柄driver.get("http://bj.58.com")

print("点击之前句柄:",driver.window_handles)

ele=driver.find_element_by_xpath(".//*[@id='fcNav']/em/a[1]")ele.click()

list_windowns=driver.window_handles

print("点击之后句柄:",driver.window_handles)

driver.switch_to.window(list_windowns[1])

eleDaxing=driver.find_element_by_link_text("大兴")

eleDaxing.click()

9.多表单

el = driver.find_element_by_xxx(value)

driver.switch_to.frame(el)/driver.switch_to_frame(el)

案例:

fromseleniumimportwebdriver

#打开游览器

driver=webdriver.Firefox()

#登录QQ

url="https://qzone.qq.com/"

driver.get(url)

#获取元素

#定位表单元素

ele_bd=driver.find_element_by_id("login_frame")

driver.switch_to.frame(ele_bd)

ele=driver.find_element_by_xpath(".//*[@id='switcher_plogin']")

ele.click()

#输入账号

ele2=driver.find_element_by_id("u")

ele2.send_keys()

#输入密码

ele3=driver.find_element_by_id("p")

ele3.send_keys("")

ele4=driver.find_element_by_id("login_button")

ele4.click()

弹出框操作

# 进入到弹出框中

driver.switch_to.alert

#接收警告

accept()

#解散警告

dismiss()

#发送文本到警告框

send_keys(data)

用法:driver.switch_to.alert.accept()

下拉框

案例:

fromseleniumimportwebdriver

importtime

driver=webdriver.Firefox()

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

ele=driver.find_element_by_id("s-usersetting-top")

ele.click()

ele1=driver.find_element_by_xpath(".//*[@id='s-user-setting-menu']/div/a[2]")

ele1.click()

time.sleep(2)

ele2=driver.find_element_by_xpath(".//*[@id='yadv-setting-gpc']/div/div[1]/i[1]")

ele2.click()

list_ele=driver.find_elements_by_class_name("c-select-item")

print(list_ele)

list_ele[2].click()

# for list_i in list_ele:

#     print(list_i.text)

#     if list_i.text =="最近一周":

#         list_i.click()

鼠标和键盘操作

鼠标

1.先导入动作链类:

fromselenium.webdriverimportActionChains

ActionChains(driver)

2.常用鼠标动作:

ActionChains(driver).context_click(ele).perform()点击鼠标右键

ActionChains(driver).double_click(ele).perform()点击鼠标左键

ActionChains(driver).move_to_element(el).perform()鼠标悬停

3.perform()对前面的方法执行

#案例:

fromselenium.webdriverimportActionChains

fromseleniumimportwebdriver

importtime

driver=webdriver.Firefox()

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

ele=driver.find_element_by_xpath(".//*[@id='s-top-left']/div/a")

# ele.click()

ActionChains(driver).double_click(ele).perform()

键盘

1.导入

fromselenium.webdriver.common.keysimportKeys

2.常用键盘操作

send_keys(Keys.BACK_SPACE)    删除键(BackSpace)

send_keys(Keys.SPACE)         空格键(Space)

send_keys(Keys.TAB)           制表键(Tab)

send_keys(Keys.ESCAPE)        回退键(Esc)

send_keys(Keys.ENTER)         回车键(Enter)

send_keys(Keys.CONTROL,‘a’)   全选(Ctrl+A)

send_keys(Keys.CONTROL,‘a’)   全选(Ctrl+A)

send_keys(Keys.CONTROL,‘x’)   剪切(Ctrl+X)

send_keys(Keys.CONTROL,‘v’)   粘贴(Ctrl+V)

send_keys(Keys.F1)            键盘F1

send_keys(Keys.F12)           键盘F12

浏览器等待

1.为什么要进行等待

1.网速慢 2.网站内容过多 3.如果不进行等待而直接定位元素,可能会抛出异常

2.selenium中等待的分类

1.固定等待

2.显示等待

WebDriverWait(driver,10,0.5).until(EC.presence_of_element_located(

(By.CLASS_NAME,"g-hu")))

3.隐式等待 

driver.implicitly_wait(n)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容

  • 一、概念 互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous in...
    __65a0阅读 809评论 0 4
  • 自动化 一、概念 互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuou...
    G_eebd阅读 331评论 0 0
  • [TOC] 简介 Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就...
    Whyn阅读 1,054评论 0 2
  • 非本人编写 原文:https://www.cnblogs.com/jcshuaiashuai/p/10372616...
    小巷_4eda阅读 338评论 0 0
  • 1. 什么是框架 框架(framework)是一个框子 -- 指其约束性,也是一个架子 -- 指其支撑性,是一个基...
    在摘棉花阅读 186评论 0 0