自动化测试基本概念和selenium中的基本命令(元素定位)

1.分层自动化测试:一般自动化测试可以理解为金字塔模型,即从下到上依次为数据处理层:unit(70%)、业务逻:service(20%)、ui界面层:ui(10%)。
一般unit为单元测试;code review,service为模块接口测试、web接口测试;ui为ui自动化测试JS,即70%的投入为单元测试,20%为集成、接口测试,10%为UI层的自动化测试
2.分层思想:每一层做自己该做的事,这样很早就可以暴露错误
3.python常见单元测试框架有:unittest、pytest
4.适合自动化测试的测试场景:
1)任务测试明确,不会频繁变动
2)回归测试比较频繁
3)界面比较稳定
4)有大量的重复任务
5)软件的维护周期较长
6)项目进度方面的压力较小
7)测试人员具备较强编程能力
5.ui自动化的case是从功能用例中来的,如果迭代周期较短,可以选取功能用例中的核心代码
6.常用的自动化测试工具:
1)UTF=QTP,主要用于回归测试和同软件新版本测试,支持B/S和C/S架构
2)RF(Robot Framework),python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发
3)Selenium,用于Web应用程序测试的工具,测试直接运行在浏览器中,就像真正的用户在操作一样,主要功能包括:测试与浏览器的兼容性,测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上
7.selenium1.0版本
Selenium 1是通过往浏览器里嵌入JS,同时发送JS命令来控制浏览器
1)selenium IDE
Firefox浏览器中的一个小插件,实现浏览器操作的录制与回放
2)selenium Grid
用来对测试脚本做分布式执行,即实现在多台机器上和异构环境中运行测试用例(布式的概念是写好一条用例可以调用不同的平台执行,如 A电脑上有一个测试用例,可以调用B电脑(linux)的 Firefox浏览器来跑A电脑上的测试用例;也可以调用C电脑(windows)的 Chrome浏览器来跑A电脑上的测试用例,这是分布式的概念)
3)selenium RC
使用浏览器内置的JavaScript 翻译器来翻译和执行selenese 命令(selenese 是 selenium 命令集合)
支持多种不同的语言编写测试脚本,通过selenium RC的服务器作为代理服务器去访问应用,达到测试的目的
工作原理网址:https://blog.csdn.net/moto8595/article/details/69527323
① client libraries:用于编写测试脚本,用来控制selenium server的库,暴露API供调用
② selenium server:负责控制浏览器行为,Selenium Server 主要包括3 个部分:Launcher、Http Proxy、Core
Launcher:用于启动浏览器,把selenium Core加载到浏览器页面当中,并把浏览器的代理设置为selenium server的HTTP Proxy
Http Proxy:拦截请求
Selenium Core:就是一堆JavaScript函数的集合,即通过这些函数,解释selenese命令,我们才可以实现用程序对浏览器进行操作
8.selenium 2.0版本:selenium+webdriver
通过WebDriver 去替代RC,webdrive提供了更出色的API,可以绕过JS,直接控制浏览器,更快,安全性更高。但为了保持兼容性,所以selenium 2.0中,RC 和webdriver 并存,但说起selenium 2.0 一般指的是webdriver
9.selenium 3.0版本
将Firefox独立化,对IE、Edge等浏览器有了更好的支持。彻底废弃了RC
10.selenium环境搭建
1)在线安装selenium:在python的pip路径下打开cmd,输入pip install selenium
Pip可以安装python的一些库,setuptools
2)离线安装selenium:下载好文件后,在文件路径下打开cmd,输入python setup.py install
11.Firefox中IDE
1)安装IDE,将下载好的IDE文件直接拖拽进Firefox浏览器中即可。
2)安装好之后在右上角打开IDE可以开始录制与回放了
12.selenium中定位元素,这里我们用百度主页来做示范
首先我们调用webdrive打开浏览器进入百度主页:

1)通过id定位输入框:input标签
driver.find_element_by_id(“kw”).send_keys(“苹果禁售”)

2)通过name定位输入框:
driver.find_element_by_name(“wd”).send_keys(“苹果禁售”)
3)通过class定位输入框:但class属性值有空格一般不用此方法
driver.find_element_by_class_name(“s_ipt”).send_keys(“苹果禁售”)
4)通过link定位输入框:必须是a标签才可以定位
driver.find_element_by_link_text(“新闻”).send_keys(“苹果禁售”)
5)通过patail_link定位输入框:通过部分文字去定位标签
driver.find_element_by_partial_link_text(“新”).click()
6)通过xpath定位输入框:定位框没有属性值时可用,绝对路径定位时用/,相对路径用//
driver.find_element_by_xpath("/html/body/div/div/div/div/div/form/span[1]/input").send_keys(“苹果禁售”) #绝对路径
driver.find_element_by_xpath("//form[@id=‘form’]/span[1]/input").send_keys(“苹果禁售”) #相对路径

7)通过css定位输入框:使用绝对路径时中间用空格或>号,但一般不用绝对路径定位,下面是几种用相对路径定位
ID定位:driver.find_element_by_css_selector("#kw").send_keys(“苹果禁售”)
driver.find_element_by_css_selector(“input#kw”).send_keys(“苹果禁售”)
前面加input是为了防止写代码不好的人万一设定两个相同的ID
Class定位:
driver.find_element_by_css_selector(".class的属性值").send_keys(“苹果禁售”)
12.webdrive的一些API
1)回退:
driver.back()
2)前进
driver.forward()
3)刷新
driver.refresh()
4)设置浏览器的大小
driver.set_window_size(480,320)
5)浏览器全屏
driver.maximize_window()
6)清除输入框的内容
driver.find_element_by_id(“kw”).clear()
7)查看定位的框的尺寸,可用print(size)打印结果
size = driver.find_element_by_id(“kw”).size
8)获取选定位置文本内容
driver.find_element_by_id(“kw”).text
9)获得属性值,括号里写需要查询的属性名,可用print()打印结果
attribute = driver.find_element_by_id(“kw”).get_attribute(‘name’)
10)看选定的位置是否显示出来,一般值是true或者false,后面可以调用if语句
result = driver.find_element_by_id(“kw”).is_displayed()
11)设定休眠时间:进入一个网页后等待一段时间后执行命令,括号里是等待的时间
import time
time.sleep(5)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值