(Python+selenium)UI自动化测试详解

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快  

我们在进行UI自动化测试时,一般采用java+selenium或者python+selenium的方式。由于python比较简单,上手快,因此建议大家采用python+selenium的方式来进行UI自动化。

1、安装pycharm

PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。

2、安装python环境

下载python 官网https://www.python.org下载安装包.exe,安装,并添加环境变量,具体可以自行百度。

新建项目

打开pycharm,在左上角File选择new project

在根目录上右键,新建一个python file,并命名。

安装selenium

Selenium 是一个用于Web 应用程序的自动化测试工具。

左上角File-settings-project:项目名-project interpreter,点击+,搜索selenium,点击install package,安装成功后,点击确定。
![](https://img-blog.csdnimg.cn/img_convert/b1609d3de18ee0a7f496cb1e4aef3981.png

安装驱动

Selenium无法直接操作浏览器,而是通过各个浏览器厂商提供的浏览器驱动来操作浏览器。

首先查看自己所使用浏览器的版本,百度搜索对应浏览器版本的驱动下载地址,如谷歌浏览器驱动:http://chromedriver.storage.googleapis.com/index.html 找到对应的版本进行下载,需要和浏览器版本一致(前三个位即可)。

下载解压,将驱动放置python安装路径下。

开始第一个脚本

from selenium import webdriver
from selenium.webdriver.common.by import By
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.find_element(By.ID,'kw').send_keys('selenium')
driver.find_element(By.ID,'su').click()
driver.quit()

在test.py文件中输入如上代码,点击运行按钮。

执行效果为自动打开谷歌浏览器,打开百度首页,在百度搜索输入框输入selenium,点击百度一下按钮,然后关闭浏览器。

脚本解析

导包

selenium实际是一个包,如下图结构,下面有common包和webdriver包。

在使用包下面的类或者函数之前,需要先导入。

第一行我们从selenium中导入了整个webdriver包,用来支持新建浏览器实例。

第二行我们导入了selenium包下的webdriver包下的common包下的by文件中的By类。用来支持以By.的方式定位元素。

浏览器实例

driver=webdriver.Chrome()

实例化Chrome类,生成一个谷歌浏览器的实例,后续我们用这个实例来进行浏览器操作。
同样,如果要驱动火狐浏览器,

driver=webdriver.Firefox()

驱动edge浏览器,

driver=webdriver.Edge()

前提是已安装对应的驱动。

访问url

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

通过实例的get方法,输入url作为参数,这个实例就能打开百度的网址

定位元素

想要让程序操作页面元素,我们需要知道要操作的元素是哪个,就需要对元素进行定位。
可以看文章了解元素定位方式。

这里用的就是通过id的方式进行定位,它的返回值是一个WebElement类型,即网页元素。

driver.find_element(By.ID,'kw')

元素操作

当对元素定位后,我们就可以对元素进行操作了。想一想我们在做手工测试的时候,会对元素做什么操作?

我们可以给一个文本框输入值,可以点击一个按钮,

driver.find_element(By.ID,'kw').send_keys('selenium')

send_keys()方法,可以给元素输入值

driver.find_element(By.ID,'su').click()

click()方法,用来点击元素。
另外,我们还可以清空元素的值。

driver.find_element(By.ID,'kw').clear()

当然还有其他元素操作的方法。我们也可以先获取到元素,再调用方法,如

ele=driver.find_element(By.ID,'kw')
ele.send_keys('selenium')

关闭浏览器

driver.quit()

调用实例的quit()方法来关闭浏览器。

总结

本文介绍了UI自动化测试入门的第一个测试脚本,并对脚本内容进行了详细的解析,看完此文,相信没有UI自动化基础的同学,也能够开始UI自动化测试用例的编写了!

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

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

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

相关文章

C++ STL vector基本原理和用法

文章目录 基本原理1. 数据存储结构2. 内存管理机制3. 迭代器实现原理4. 元素访问原理5. 插入和删除元素原理 常见用法1. 概述2. 包含头文件3. 定义和初始化4. 常用成员函数5. 迭代器6. 内存管理与性能特点7. 应用场景 基本原理 以下是关于 std::vector 的基本原理讲解&#xf…

解决opencv在windows环境下读取中文图片名问题

在Windows系统下,cv2读取中文图片名时可能会报错,主要是因为OpenCV的imread函数在处理文件路径时,默认使用的是系统的编码格式,而Windows的默认编码可能与文件名的编码不匹配。具体原因包括: 编码不匹配:Wi…

使用openvino加速部署paddleocr文本检测模型(C++版)

使用openvino加速部署paddleocr文本检测模型(C++版) 引言1,前处理2,后处理3,C++部署代码引言 文本检测在openvino部署端的前后处理与在paddleocr中的不太一样。 1,前处理 在将文本检测的模型转换成onnx格式(输入输出大小都已固定),并部署到openvino后,其预处理后的输…

HuaWei、NVIDIA 数据中心 AI 算力对比

HuaWei Ascend 910B Ascend 910B 是 HuaWei 于 2023 年推出的高性能 AI 处理器芯片,其对标产品为 Nvidia A100/A800,其算力表现如下: 峰值算力:Ascend 910B 的半精度(FP16)算力达到 256 TFLOPS(…

2021-04-08 VSC++: 降序折半查找。

void 降序折半查找(int* a, int aa, int aaa) {//缘由https://bbs.csdn.net/topics/399166569int aaaa aaa / 2; bool k 0;if (a[0] aa){cout << 0, cout << ends << "查找&#xff1a;" << aa << endl;k 1;return;}else if (a[aa…

MySQL三层B+树能存多少数据

结论 bigint类型的索引&#xff08;8字节&#xff09;&#xff0c;一条数据假设是1KB的话&#xff0c; 三层B树 能存2000万条数据 该题主要考察数据如何在B树中存储的 计算思路 1.计算叶节点的大小 2.计算子节点的个数&#xff0c;由此算出第三层叶子节点的个数&#xff08;n*n…

Leetcode经典题17--两数之和

两数之和 题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同的元素。 你可以按任意顺…

基于自然语言处理(NLP)的智能客服系统

基于自然语言处理&#xff08;NLP&#xff09;的智能客服系统是现代客户服务领域的一项重要技术&#xff0c;它通过模拟人类对话的方式&#xff0c;为用户提供及时、准确和个性化的服务。以下是关于基于NLP的智能客服系统的一些关键要素和功能&#xff1a; 1. 自然语言理解&am…

React Native 集成原生Android功能

React Native 集成原生功能完整指南 前言 在 React Native 开发中&#xff0c;我们经常需要使用设备的原生功能&#xff0c;比如蓝牙、打印机等。本文将以集成打印机功能为例&#xff0c;详细介绍如何在 React Native 项目中集成 Android 原生功能。 集成步骤概述 创建原生…

网络危机公关处理的内涵与价值

互联网发展到今天&#xff0c;已经进入了一个自媒体的新时代&#xff0c;用户发布信息的门槛几乎没有&#xff0c;信息的传播速度也较传统网络更加迅速。新媒体提升了信息传播的效率&#xff0c;但也给负面危机的爆发提供了便利条件&#xff0c;商业经营中企业或高管更容易面临…

单片机优先级

1. pre-emption priority 先占优先级——抢占优先级 抢占优先级是中断能否打断其他中断的属性。 在STM32中&#xff0c;中断服务函数正在执行时&#xff0c;如果发生了一个更高抢占优先级的中断&#xff0c;当前中断会被新的中断打断&#xff0c;形成中断嵌套。抢占优先级由NV…

php时间strtotime函数引发的问题 时间判断出错

在 PHP 中&#xff0c;strtotime 函数能处理的最大时间范围取决于您的系统和 PHP 版本。 一般来说&#xff0c;它可以处理的时间范围从 1901 年 12 月 13 日到 2038 年 1 月 19 日。超过这个范围可能会导致不可预测的结果或错误。 如果您需要处理更大范围的时间&#xff0c;可能…

Spark和MapReduce之间的区别?

1 、性能方面 Spark 在内存中处理数据&#xff0c;而 MapReduce 是通过 map 和 reduce 操作在磁盘中处理数据。因此从这个角度上讲Spark 的性能应该是超过 MapReduce 的。 然而&#xff0c;既然在内存中处理&#xff0c; Spark 就需要很大的内存容量。就像一个标准的数据库系…

win系统B站播放8k视频启用HEVC编码

下载HEVC插件 点击 HEVC Video Extension 2.2.20.0 latest downloads&#xff0c;根据教程下载安装 安装 Random User-Agent 点击 Random User-Agent 安装 配置 Random User-Agent ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dda0ea75096c42c0a79ef6f6f5521…

中伟视界:AI识别摄像头+AI预警平台在矿山皮带空载监测中的应用

在矿山开采和矿物处理过程中&#xff0c;皮带运输机扮演着举足轻重的角色。它们负责将矿石、煤炭等物料从一处运送到另一处&#xff0c;是矿山生产流程中不可或缺的一环。然而&#xff0c;皮带运输机在运行过程中也面临着一些挑战&#xff0c;其中之一便是皮带空载问题。皮带空…

卷积神经网络入门指南:从原理到实践

目录 1 CNN的发展历史 2 CNN的基本原理 3 CNN核心组件 3.1 卷积操作基础 3.2 卷积层详解 3.3 高级卷积操作 3.3.1 分组卷积&#xff08;Group Convolution&#xff09; 3.3.2 深度可分离卷积&#xff08;Depthwise Separable Convolution&#xff09;&#xff1a; 3.3 池…

CSS系列(35)-- Subgrid详解

前端技术探索系列&#xff1a;CSS Subgrid详解 &#x1f4d0; 致读者&#xff1a;探索子网格布局的艺术 &#x1f44b; 前端开发者们&#xff0c; 今天我们将深入探讨 CSS Subgrid&#xff0c;这个强大的网格布局扩展特性。 基础概念 &#x1f680; 子网格设置 /* 父网格…

实训项目-人力资源管理系统-1Company子模块

目录 前言&#xff1a; 用例图设计&#xff1a; 系统设计 开发方式&#xff1a; 技术架构 系统结构&#xff1a; API文档&#xff1a; 工程搭建&#xff1a; 搭建父项目 pom&#xff1a; 创建公共子模块&#xff1a; 返回实体&#xff1a; 分布式id生成器&#xff1a; …

2.5.3 文件使用、共享、保护、安全与可靠性

文章目录 文件使用文件共享文件保护系统安全与可靠性 文件使用 操作系统向用户提供操作级、编程级文件服务。 操作级服务包括目录管理&#xff0c;文件操作&#xff08;复制、删除、修改&#xff09;&#xff0c;文件管理&#xff08;设置文件权限&#xff09;。 编程级服务包括…

路由器转发数据报的封装过程

✍作者&#xff1a;柒烨带你飞 &#x1f4aa;格言&#xff1a;生活的情况越艰难&#xff0c;我越感到自己更坚强&#xff1b;我这个人走得很慢&#xff0c;但我从不后退。 &#x1f4dc;系列专栏&#xff1a;网路安全入门系列 目录 路由器转发数据的封装过程 路由器转发数据的封…