一起学python自动化(第一天)

分层的自动化测试

我们大家都知道,作为一名测试工程师,它的金字塔就是这样子的:
在这里插入图片描述
作为一个新时代富有上进心的美少女,仅仅一个UI测试能满足我的需求吗?答案自然是:不能。那么接下来要做的就是:
在这里插入图片描述

本系列文默认各位有一定的测试理论基础、python基础
本系列文默认各位会百度,学习自动化系列的课程,默认各位已经配置好了相关环境,默认安装了编译器。

自动化测试适合的项目

就经过小女子在书本上以及各大视频网站、博客网站上总结下来而言,有以下几点:
1、需求变动不频繁,系统界面稳定
2、软件维护周期长
3、项目进度压力不大
4、需要大量重复的测试案例,重复任务
5、软件维护周期很长,比较频繁的回归测试

UI自动化测试

接下来我们就切到正题,进入到selenium的世界
在这里插入图片描述
1、安装selenium

pip install selenium

UI自动化测试,需要依赖第三方库selenium,安装完成以后,还需要安装对应的浏览器驱动,这里我以谷歌浏览器为例:
同样的,你需要去安装谷歌浏览器以及相对应的webdriver

地址:https://npm.taobao.org/mirrors/chromedriver

安装完成以后,接下来我们以百度首页为例子做讲解。
首先我们需要知道webdriver有八种定位方式:

打开浏览器开发者模式(F12),我们想要在百度首页,定位到首页输入框的位置在哪里

1id定位
find_element_by_id('kw')
2、name 定位
find_element_by_name('wd')
3class定位
find_element_by_class('s_plit')
4、tag定位
find_element_by_tag_name('input')
5、link定位
find_element_by_link_text('百度')
6、xpath定位
(1)绝对路径定位
find_element_by_xpath('就是按照目录一层层的的找下去,我就不写了')2)相对路径定位
find_element_by_xpath('//input[@id='kw']')
7、CSS定位
find_element_by_css-selectlor('.s_ipt')
8、By定位
finf_element(By.ID,'kw')

那么接下来,我们就用刚刚学到到元素定位的方法,来尝试一下自动打开浏览器并且搜索’selenium’吧

from selenium import webdriver
#打开浏览器
driver=webdriver.Chrome()
#最大化浏览器
driver.maximize_window()
#传入百度网址
driver.get('https://www.baidu.com/')
driver.find_element_by_id('kw').clear()
#定位到搜索框并输入selenium
driver.find_element_by_id('kw').send_keys('selenium')
#定位到搜索按钮,并且点击。.click()方法是一个点击方法
driver.find_element_by_id('su').click()
driver.quit()#关闭浏览器

这里的.click()方法,有些网站是没有搜索按钮的,这时候我们可以用submit()方法来提交

from selenium import webdriver
#打开浏览器
driver=webdriver.Chrome()
#最大化浏览器
driver.maximize_window()
#传入百度网址
driver.get('https://www.baidu.com/')
sousuoci=driver.find_element_by_id('kw')
sousuoci.send_keys('selenium')
sousuoci.submit()
driver.quit()

以上我们只是用了元素定位的第一种方法来展示了一下,如何模拟自动化的去查询我们需要的信息。很简单是吧.哈哈哈,另外在教大家几个小技巧

#获得输入框的尺寸
size=driver.find_element_by_id('kw').size
#文本
.text
#元素是否可见
is_displayed()

既然很简单,那么接下来,就带领着大家学一下常见的操作有哪些?

鼠标的操作
与鼠标相关的操作都在ActionChains类中

from selenium import webdriver
from selenium.webdriver import ActionChains
driver=webdriver.Chrome()
driver.get('https://www.baidu.com')
#定位到悬停的元素
above=driver.find_element_by_link_text('设置')
ActionChains(driver).move_to_element(above).perform()
#.perform()是提交类中存储的行为
context_click()#右击
double_click()#双击
drag_and_drop()#拖动

键盘的操作也用不太到,这里就不讲了。

等待时间
我们知道,在操作的时候,通常我们会加一个等待时间,让浏览器去响应。
webdriver里有显性等待和隐性等待两种方式

显性等待:你可以把它理解成必须在规定时间内(比如10秒,每隔1秒检测一次)找到了这个元素,他就跑下去,不然就是抛出异常(这里默认各位了解python异常处理机制)。他是指定在哪一步代码操作的时候,需要设置等待时间。
一般是同我们的exception_conditions里面的条件判断方法啊一起结合使用
这个方法表建议自行百度

webDriverWait()一般与until或者not until 连用的
WebDriverWait(driver,10,1).until(EC.visibility_of_element_located(By.ID,‘kw’))
隐性等待:implicitly_wait(10)
在10秒内,只要找到了这个元素就继续执行下去,非固定等待时间,但是就是你会看到,只要是没找到,在这个时间内,浏览器会一直在转圈圈,一直在找,是一个全局等待。
**强制等待:**sleep(10),就是不管你有没有找到,都要等待10秒再去进行下一步操作。

多表单的切换****多窗口的切换

switch_to_frame()
switch_to_window()

下拉框的处理
主要就是使用的select类里面的方法

select_by_value()
select_by_visible_text()
select_by_index()

注意一下:必须要去看页面的下拉框,开发人员是不是用的select方法写的,如果不是,那这个就不能用了。百度下拉框我去看了一下,不是select方法,应该是后来迭代他们换了一种写法吧。目前我还不知道他们这是怎么弄得,问了一个前端的开发人员,说不了解这种写法。大家也可以自己打开F12,苏癌变找个页面看一下百度下拉框。我找的是百度搜索设置页的。

好了,到这里,我们就可以用电脑去模拟人的操作,去打开一个网页,并且完成搜索点击了。
明天的时候,一起看一下DDT数据驱动测试吧

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值