软件测试——自动化测试常见函数

在上一篇文章软件测试——自动化测试概念篇-优快云博客中,给大家演示了一下自动化程序,而本篇文章会带大家详细学习selenium库。

selenium库是python官方的库,里面包含了很多操控浏览器的函数。

本节重点

  • 元素定位
  • 操作测试对象
  • 窗口
  • 等待
  • 导航
  • 弹窗
  • 文件上传
  • 浏览器参数

0.自动化程序

上篇文章中的自动化程序代码如下:

#编写自动化脚本,具体步骤
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.microsoft import EdgeChromiumDriverManager

# #1.打开浏览器---驱动管理
#下载和安装Edge浏览器对应的驱动
EdgeIns=EdgeChromiumDriverManager().install()
#创建浏览器驱动对象,打开浏览器
driver=webdriver.Edge(service=Service(EdgeIns))
time.sleep(2)
#2.输入百度网址:https://www.baidu.com(网址一定要写完整,不要写成www.baidu.com)
driver.get("https://www.baidu.com")
time.sleep(2)
#3.找到百度输入框,输入关键词“迪丽热巴”
driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("迪丽热巴")
time.sleep(2)
#4.点击“百度一下”
driver.find_element(By.CSS_SELECTOR, "#su").click()
time.sleep(2)
#5.关闭浏览器
driver.quit()

1.元素定位

首先,我们要了解在一个web网页中包含很多的元素(以edge浏览器做演示)

我们可以点击键盘上的F12或者按shift+ctrl+i进入开发者工具,如下图所示(如果第一次打开不是这样的,就点击右上角的元素按钮)

然后我们需要点击开发者模式左上角的小箭头,让他变成黄色。

当打开这个后,我们鼠标放在左边的百度界面时,对应的区域就会变成蓝色,此时这个小区域就称之为元素。

对应web自动化测试的操作核心是能够找到页面的元素,然后才能对元素进行具体的操作。常见的元素定位方式非常多,如id,classname,tagname,xpath,cssSelector。常用的主要有cssSelector和xpath。

比如上一篇文章中,我们写的web自动化程序会在百度的输入框内输入“迪丽热巴”,就是因为能成功定位到输入框元素;能自动点击“百度一下”,也是因为可以定位到对应的元素。

代码中的#kw和#se分别代表的是输入框和“百度一下”按钮。

怎么证明呢?

点击百度的输入框后,开发者工具会自动跳转到其对应的代码。

然后鼠标右击黄色代码部分,点击复制,然后选择复制方式,这里选择复制selector。

而复制的内容就是:#kw,也就是搜索框对应的选择器定位方式,我们再回过头来看这个代码就很好理解了,后面的send_keys的意思就是输入文本,即“迪丽热巴”。

而“百度一下”按钮也是同理,click的意思是点击按钮。

1.1 cssSelector

cssSelector是一个选择器,选择器的功能:选中页面中指定的标签元素

选择器的种类分为基础选择器和复合选择器,常见的元素定位方式可以通过id选择器和子类选择器来进行定位。

在前面也介绍过了,可以通过cssSelector选择器来定位页面元素,我们使用的函数是find_element,而selenium库中还有一个find_elements函数,这个函数和find_element的区别在于他可以查找多个元素。

假如我们使用ctrl+f查找红框内的让元素,可以发现最终在整个页面中查找到了10个。

使用find_element只能查找其中一个,而使用find_elements则可以全部查找。

我们在最后打印以下查找的每个元素的文本信息,可以发现他可以对应到百度页面中的文本

而在这十条文本中,我们随便打开一条看一下他的元素定位,步骤还是和前面一样,选中文本,然后跳转到对应代码,鼠标右键选择复制,然后复制到selector。

  • 最终复制出来的就是:#hotsearch-content-wrapper > li:nth-child(1) > a。
  • 而我们刚刚搜索的是:#hotsearch-content-wrapper > li。

所以使用find_elements函数可以帮我们找到多个元素。

实际上刚刚的那十个文本处于同一个列表中,在前端中ul表示列表,而li标签表示的是列表中的每一个内容。

我们可以发现在第一行ul标签中有一个id="hostsearch-content-wrapper",其中的id表示他是一个id选择器,再来看我们刚刚查找的其中一个的元素定位:#hotsearch-content-wrapper > li:nth-child(1) > a。其中的li:表示的是子类选择器,他要找的是第一个li标签。

1.2 xpath

XML路径语言,不仅可以在XML文件中查找信息,还可以在HTML中选取节点。xpath使用路径表达式来选择xml文档中的节点。

在xpath语法中:

  • 1.获取HTML页面所有的节点: //*   
  • 2.获取HTML页面指定结点://[指定结点]   (如://ul表示获取HTML页面所有的ul节点)
  • 3.获取一个结点中的子节点:/   (如://span/input表示input是span的子节点)
  • 4.获取一个结点的父结点:..   (如://input/...表示获取input结点的父结点)
  • 5.实现结点属性的匹配:[@.....]   (如://*[@id='kw']表示匹配HTML页面中id属性为kw的结点)
  • 6.使用索引的方式获取对应内容,索引从1开始。   (如百度首页://div/ul/li[3]表示定位到第三个百度热搜标签)

我们再以百度的输入框为例,选择复制方式为复制XPath。

百度输入框Xpath元素信息为://*[@id="kw"]

  • 其中的//*表示获取HTML页面所有的结点
  • [@id="kw"]表示获取id属性为kw的结点

“百度一下”按钮的id属性为su,能否通过//*[@id='su']找到“百度一下”呢?

我们打开开发者工具,使用ctrl+f进行搜索,输入//*[@id='su']。

按下回车后,可以发现,左边的“百度一下”按钮变成蓝色了,说明我们的搜索成功找到了。

通过这种方式,我们可以查找到页面中的所有元素。

如何理解//*[@id="hotsearch-content-wrapper"]/li[1]/a/span[2]这个xpath

这个xpath其实是前面提到过的li标签,在cssSelector中我们说他是一个子类选择器。

那么在xpath中如何理解他的元素信息://*[@id="hotsearch-content-wrapper"]/li[1]/a/span[2]

其中//*[@id="hotsearch-content-wrapper"]表示的是ul标签。

2.操作测试对象

获取到了页面的元素之后,接下来就是要对元素进行操作了。常见的操作有点击、提交、输入、清除、获取文本。


2.1 点击/提交对象

click()

我们在前一篇文章中写过的自动化程序中就有click函数,如下:

其中先找到百度的输入框然后输入"迪丽热巴",然后再找到"百度一下"按钮,并点击该对象成功查找目标信息。

这里的逻辑非常简单,我们找到"百度一下"按钮,并点击该对象的代码写成了一行,也可以写成两步,先查找再点击。

最终的效果是一样的。

点击是模拟鼠标的动作,也就是说页面中的任何一个元素都可以点击。

比如说我们现在要点击该新闻链接:

我们通过cssSelecor的方式查找该条新闻,代码如下:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值