软件测试(Web自动化测试)(二)

news2025/1/13 3:06:46

一.Selenium WebDriver的基本应用

(一)安装浏览器驱动

1.关闭浏览器的自动更新功能

以Windows7(64位)操作系统为例,讲解如何关闭Chrome浏览器的自动更新。首先按下快捷键“Win+R”,打开运行对话框,然后在该对话框中输入“taskschd.msc”,单击“确定”按钮,此时会打开“任务计划程序”窗口,选中名称为“GoogleUpdateTaskUser....”的条目,右击选择“禁用”选项,Chrome浏览器的自动更新功能即可处于关闭状态。

(二)使用浏览器定位页面元素

1.使用Chrome浏览器定位页面元素

2.使用Firefox浏览器定位页面元素

在Firefox浏览器开发者工具的“查看器”中可以看到“登录”按钮的class属性的值位“J-login-submit”,name属性的值为“sbtbutton”。

(三)使用Selenium定位页面元素

单个元素的定位

1.id定位

id属性值一般不会重复,使用id定位元素的前提条件是元素中必须有id属性名。

2.name定位

3.class name定位

在HTML页面中,class属性主要用于渲染页面的样式。

4.tag name定位

tag name定位是通过元素的标签名来定位元素。

5.link text定位

link text定位是通过超链接的文本内容来定位元素

find_element_by_link_text()方法中的参数text表示超链接的全部文本内容。

6.partial link text定位

find_element_by_partial_link_text()方法中的参数link_text表示超链接文本的部分或全部内容。

7.xpath定位

xpath(XML Path Language的简称)定位是基于元素的路径定位。

(1)xpath通过绝对路径定位元素

绝对路径是从最外层元素到指定元素之间所有经过元素层级的路径。绝对路径的写法是以单斜杠开头逐级开始编写,不能跳级。例如,/html/body/div/p[1]/input,表示以/html根节点开始,使用单斜杠来分隔元素层级,如果某个层级有多个相同的标签,就按照前后顺序确定是第几个,再写上相应数字。例如p[1]表示当前层级的第一个<p>标签。由于绝对路径对页面结构要求比较严格,所以不建议使用。

(2)xpath通过相对路径定位元素

相对路径可匹配任意层级的元素,不限制元素的位置。相对路径的写法是以双斜杠开头,双斜杠后面紧跟着元素名称,不确定的元素名称可以使用*代替。例如,//input或//*。

常用的xpath定位元素写法和说明

xpath定位元素写法说明
//span/input[1]通过索引定位,表示选取第一个与表达式//span/input匹配的元素
//span/input[last()]通过索引定位,表示选取最后一个与表达式//span/input匹配的元素
//input[@id='dl']通过id属性定位,表示定位id属性值为dl的元素
//input[@name='mz']通过name属性定位,表示定位name属性值为mz的元素
//input[@class='s_ ipl']通过class属性定位,表示定位class属性值为s_ipl的元素

//*[@id='kw']

通过通配符*定位,表示定位所有id属性值为kw的元素
//a(@name='book' or text()='music']通过逻辑表达式定位,表示定位name属性值为book或者文本内容为music的元素
/a[contains(@href='新闻')and text()='新闻联播']通过逻辑表达式定位,表示定位 href属性值中包含“新闻”并且文本内容中包含“新闻联播”的元素
/html/body/input[[1]通过绝对路径定位,表示定位/html/body/input 下的第一个<input>标签

8.css定位

在选择元素的id、name、或class属性进行定位时,要确保这些属性的值在页面是唯一的,否则程序将出现定位不到元素的问题。

(四)获取元素的常用信息

1.获取元素尺寸

2.获取元素文本

3.获取元素属性值

(1)元素属性值获取

在Web自动化测试时,可以通过获取元素的属性值进行断言。获取元素属性值的方法是get_attribute()。

(2)判断元素是否可用

语法格式:is_enabled()

(3)判断元素是否可见

语法格式:is_displayed()

(4)判断元素是否被选中

语法格式:is_selected()

(五)鼠标的常用操作

方法说明
perform()鼠标执行,所有的鼠标操作都需要调用该方法才可以生效
click()鼠标单击
context_click()鼠标右键单击
double_click()鼠标双击
drag_and_drop(source,target)鼠标拖拽,第一个参数source表示源元素,即被拖拽的元素,第二个参数target表示目标元素
move_to_element()鼠标悬停

(六)键盘的常用操作

要先导入Keys类

from selenium.webdriver.common.keys import Keys
方法说明
send_keys(Keys.CONTROL,‘a’)表示全选(Ctr+A)
send_keys(Keys.CONTROL,’c‘)表示复制(Ctrl+C)
send_keys(Keys.CONTROL,’x‘)

表示剪切(Ctrl+X)

send_keys(Keys.CONTROL,’v’)

表示粘贴(Ctrl+V)

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)

 

(七)浏览器的常用操作

1.浏览器窗口的设置

2.浏览器的前进与后退

浏览器前进:driver.forward()

浏览器后退:driver.back()

3.浏览器页面的刷新

刷新浏览器页面:driver.refresh()

4.获取浏览器页面的标题和URL

获取浏览器页面的标题:driver.title

获取浏览器也页面的URL:driver.current_url

5.浏览器窗口的关闭

关闭浏览器的所有窗口:driver.quit()

关闭浏览器的当前窗口:driver.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1629014.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA 以太网通信UDP通信环回

1 实验任务 上位机通过网口调试助手发送数据给 FPGA &#xff0c; FPGA 通过 PL 端以太网接口接收数据并将接收到的数据发送给上位机&#xff0c;完成以太网 UDP 数据的环回。 2 系统设计 系统时钟经过PLL时钟模块后&#xff0c;生成了两种不同频率和相位的时钟信号&#…

Java高阶私房菜-JVM垃圾回收机制及算法原理探究

目录 垃圾回收机制 什么是垃圾回收机制 JVM的自动垃圾回收机制 垃圾回收机制的关键知识点 初步了解判断方法-引用计数法 GCRoot和可达性分析算法 什么是可达性分析算法 什么是GC Root 对象回收的关键知识点 标记对象可回收就一定会被回收吗&#xff1f; 可达性分析算…

线程池处理任务的流程、步骤

线程池处理任务的流程 如果当前运行的线程数小于核心线程数&#xff0c;那么就会新建一个线程来执行任务。如果当前运行的线程数等于或大于核心线程数&#xff0c;但是小于最大线程数&#xff0c;那么就把该任务放入到任务队列里等待执行。如果向任务队列投放任务失败&#xf…

web-traffic-generator:一款功能强大的HTTP和HTTPs流量混淆工具

关于web-traffic-generator web-traffic-generator是一款功能强大的HTTP和HTTPs流量混淆工具&#xff0c;该工具基于纯Python开发&#xff0c;可以帮助广大研究人员在HTTP或HTTPs网络流量中提添加噪声&#xff0c;以此来实现流量混淆的目的。 本质上来说&#xff0c;web-traff…

为什么堆排序的时间复杂度是O(N*logN)?

目录 前言&#xff1a; 堆排序&#xff08;以排升序为例&#xff09; 步骤&#xff08;用大根堆&#xff0c;倒这排&#xff0c;排升序&#xff09;&#xff1a; 1.先把要排列的数组建立成大根堆 2.堆顶元素&#xff08;82&#xff09;和最后一个元素交换&#xff08;2&…

Docker之常见FAQ记录清单

一、前言 本文记录Docker使用过程中遇见的问题&#xff0c;供后续回顾参考。 关联资源&#xff1a;网络Docker博客、官方FAQ、文档、Docker 从入门到实践、中文社区、riptutorial 二、问题及处理记录 2.1、docker容器内没有vi,nano等编辑器 1&#xff09;如果宿主机本地有&a…

ESP8266刷入WI-PWN制作wifi杀手的过程、准备材料、报错解决、烧录固件等

文章目录 ESP8266---介绍1. 技术规格&#xff1a;2. 软件支持&#xff1a;3. 特性&#xff1a;4. 应用领域&#xff1a; ESP8266---材料准备1.硬件设备1.1&#xff08;micro-usb&#xff09;梯形安卓数据线&#xff08;必须要可以传数据&#xff09;1.2&#xff08;ESP8266&…

docker启动的mysql8中文乱码问题和无法输入中文

问题描述&#xff1a; 1.中文显示乱码 2.无法输入中文 中文乱码临时方案&#xff1a; show variables like ‘character%’; SET NAMES utf8mb4; SET CHARACTER SET utf8mb4; 中文乱码永久方案&#xff1a; vim /etc/my.cnf[client] default-character-setutf8mb4[mysql]…

笔试强训未见过题(个人向)

1.游游的水果大礼包 题目 解析 我们设卖出价值为c&#xff0c;卖出x个一号礼包&#xff0c;y个二号礼包。则caxby&#xff0c;那么就可以一一枚举&#xff0c;x的最大值为min&#xff08;a/2&#xff0c;b&#xff09;&#xff0c;则y就为min&#xff08;a-2*min&#xff0c;…

《Kafka 3.x.x 入门到精通》

Kafka 3.x.x 入门到精通 Kafka是一个由Scala和Java语言开发的&#xff0c;经典高吞吐量的分布式消息发布和订阅系统&#xff0c;也是大数据技术领域中用作数据交换的核心组件之一。以高吞吐&#xff0c;低延迟&#xff0c;高伸缩&#xff0c;高可靠性&#xff0c;高并发&#x…

AIGC学习步骤

目录 AIGC学习步骤 步骤一&#xff1a;理解基本概念 步骤二&#xff1a;学习资源 步骤三&#xff1a;深入研究 步骤四&#xff1a;联系专家 步骤五&#xff1a;实践应用 步骤六&#xff1a;持续学习 AIGC学习步骤 我们先来说说什么是AIGC&#xff1f; 生成式人工智能—…

数组和指针经典笔试题讲解

目录 创作不易&#xff0c;如对您有帮助&#xff0c;还望一键三连&#xff0c;谢谢&#xff01;&#xff01;&#xff01; 1.sizeof和strlen的对比 1.1sizeof 1.2strlen 1.3sizeof和strlen对比 2.数组笔试题讲解 数组名的理解 2.1一维数组 2.2字符数组 题目一&#x…

快速进入Windows中的特殊文件夹

目录 一. 进入方式二. startup ⇒ 开机自启三. fonts ⇒ 电脑字体四. sendto ⇒ 发送到五. programs ⇒ 开始菜单应用六. appsfolder ⇒ 电脑中安装的所有应用七. appdata ⇒ 应用程序的数据八. desktop ⇒ 桌面文件夹九. ConnectionsFolder ⇒ 网络连接 一. 进入方式 ⏹文件管…

将数组中最大的数放在最后一位,最小的数放在第一位

#include <stdio.h> int main() {void input(int number[]);void output(int number[]);void swapmaxmin(int number[]);int number[10];input(number);//swapmaxmin(number);output(number);return 0; }//往一个数组里输入 void input(int number[]) {int i;for(i0;i<…

微信小程序的开发

1.了解项目的基本组成结构 pages 用来存放所有小程序的页面 utils 用来存放工具性质的模块(例如:格式化时间的自定义模块) app.js 小程序项目的入口文件 app.json 小程序项目的全局配置文件 app.wxss 小程序项目的全局样式文件 project.config.json 项目的配置文件 sitem…

直播任我行,智享AI自动直播手机塑造直播新风潮,引领行业“风口”

直播任我行&#xff01;智享AI自动直播手机塑造直播新风潮&#xff0c;引领行业“风口”&#xff01; 直播作为一种受欢迎的互联网传播方式&#xff0c;如今在帮助商家推广产品并获得更多收益方面发挥着重要作用。 在直播电商领域&#xff0c;主播是连接品牌和用户之间的关键纽…

K8S 哲学 - deployment -- kubectl【create 、 rollout 、edit、scale、set】

kubectl create kubectl rollout kubectl edit kubectl set kubectl scale 1、创建与配置文件解析 2、deploy 滚动更新 &#xff1a;template 里面的内容改变触发滚动更新 编辑该 deploy 的 配置文件 &#xff0c;加入一个 label 不会触发滚动更新 改变 nginx镜…

Python 面向对象——6.封装

本章学习链接如下&#xff1a; Python 面向对象——1.基本概念 Python 面向对象——2.类与对象实例属性补充解释&#xff0c;self的作用等 Python 面向对象——3.实例方法&#xff0c;类方法与静态方法 Python 面向对象——4.继承 Python 面向对象——5.多态 1. 封装的基…

cJSON的使用

文章目录 一、CJSON初识二、CJSON解析器基础三、CJSON解析数据JSON解析基础CJSON解析数组数据CJSON解析嵌套数据 五、创建JSON数据 一、CJSON初识 JSON (JavaScript Object Notation)是一种轻量级的数据交换格式&#xff0c;常用于在网络之间传输数据。它是一种文本格式&#…

OpenCV C++实现区域面积筛选以及统计区域个数

目录 1、背景介绍 2、代码实现 2.1 获取原图 2.1.1 区域图像imread 2.1.2 具体实现 2.2 获取图像大小 2.3 阈值分割 2.3.1 阈值分割threshold 2.3.2 具体实现 2.4 区域面积筛选 2.4.1 获取轮廓findContours 2.4.2 获取轮廓面积contourArea 2.4.3 填充区域fil…