(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.xdnf.cn/news/1534999.html

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

相关文章

【第34章】Spring Cloud之SkyWalking分布式日志

文章目录 前言一、准备1. 引入依赖 二、日志配置1. 打印追踪ID2. gRPC 导出 三、完整日志配置四、日志展示1. 前端2. 后端 总结 前言 前面已经完成了请求的链路追踪,这里我们通过SkyWalking来处理分布式日志; 场景描述:我们有三个服务消费者…

Vue安装及环境配置【图解版】

欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 Facts speak louder than words! 目录 一.node.js的安装…

2024/9/14 408大题专项训练之存储系统

组相联映射怎么算组号? 有cache总大小/路数xcache大小 物理地址与虚拟地址位数不一定相等,但是她们页内地址和块内地址位数是一样的!

基于自己的数据库构建基于LLM的专属知识库

简介: 基于自己的数据库构建基于LLM的专属知识库 要基于自己的数据库构建基于LLM的专属知识库,你需要遵循以下步骤: 确定目标:首先,你需要明确你的知识库的目标。这可能是用于回答特定领域的问题、提供个性化的建议或…

微信这些危险设置一定要关!

你有仔细研究你的微信吗? 用了这么久的微信,才知道 有这么几个设置需要及时关闭! 逐个操作更安心1️⃣取消不常用的免密支付和自动续费 我>服务>钱包>底部 支付设置>免密支付/自动续费2️⃣取消对附近陌生人授权位置 2️⃣取消对…

大数据新视界 --大数据大厂之Kafka消息队列实战:实现高吞吐量数据传输

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

成功晋级 | 3本ELSEVIER期刊正式被ESCI收录,最快的录用后2天即可出版

爱思唯尔(ELSEVIER)作为一家国际顶尖出版集团,自1880年创办以来,旗下出版期刊有2800多种,其中包含《柳叶刀》《细胞》等TOP期刊,在学术科研界享誉盛名。 根据八月份公布的最新SCI目录显示,ELSE…

UART 16550的使用

前言 本文从操作系统使用 16550 的角度来学习 16550。主要解析通用的串口寄存器的作用。 16550 串口由一系列寄存器控制串口行为。不同的具体设备寄存器的偏移不同,寄存器的长度可能不同。 例如,在 AXI UART 16550中,各寄存器长度都为 32 b…

每天五分钟玩转深度学习PyTorch:模型参数优化器torch.optim

本文重点 在机器学习或者深度学习中,我们需要通过修改参数使得损失函数最小化(或最大化),优化算法就是一种调整模型参数更新的策略。在pytorch中定义了优化器optim,我们可以使用它调用封装好的优化算法,然后传递给它神经网络模型参数,就可以对模型进行优化。本文是学习第…

D - 1D Country(AtCoder Beginner Contest 371)

题目链接: D - 1D Country (atcoder.jp) 题目描述: 数据范围: 输入输出: 题目分析: 典型的l, r 区间问题,即是前缀和问题,但是注意到数据范围, 数据范围1e-9 到 1e9 数据范围,要是从最小到最大直接for循环去模拟的话,时间复杂度…

opencv中读取图片、视频以及对其基本操作

一、清华TUNA提供的Anaconda仓库镜像 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --set show_channel_urls yes 二、图…

【EI会议末轮截稿通知】第三届电子信息技术国际学术会议(EIT 2024)

第三届电子信息技术国际学术会议(EIT 2024) The 3rd International Conference on Electronic Information Technology 重要信息 大会官网:www.ic-eit.net 三轮截稿时间:2024年9月16日23:59分(后续不再征稿&#x…

【Hot100算法刷题集】双指针-01-移动零(含置零思路、移动思路、偏移量思路、冒泡法)

🏠关于专栏:专栏用于记录LeetCode中Hot100专题的所有题目 🎯每日努力一点点,技术变化看得见 题目转载 题目描述 🔒link->题目跳转链接 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾&…

企业数字化转型建设方案(数据中台、业务中台、AI中台)(可编辑的188页WORD)

引言:企业数字化转型是一个复杂而长期的过程,其核心在于通过数据中台、业务中台和AI中台的建设,推动企业实现全面的数字化升级。 方案介绍:企业数字化转型建设方案中的数据中台是企业数字化转型的核心基础设施,负责数…

Stream流的思想和获取Stream流

首先介绍流的概念: 流可以理解为一条流水线,在这条流水线中有许多操作,比如筛选所需要的数据,输出打印等, 经过这条流水线,可以获取到自己所需要的数据: -->所以: Stream流的作…

java项目之疫情下图书馆管理系统源码(springboot)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的疫情下图书馆管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息。 项目简介: 疫情下图书馆管理系…

USB虚拟串口——CDC ACM 虚拟串口(不使用 IAD)

文章目录 CDC ACM 虚拟串口实现描述符结构设备描述符配置描述符集合配置描述符接口 1 的描述符接口描述符类特殊描述符输入端点描述符接口 2 的描述符接口描述符输出端点描述符输入端点描述符类特殊请求set control line statusget line codingset line codingCDC 数据交互主机…

VirtualBox Install MacOS

环境搭建 git clone https://github.com/myspaghetti/macos-virtualbox 脚本配置 修改macos-guest-virtualbox.sh部分内容为 vm_name"macOS" # name of the VirtualBox virtual machine macOS_release_name"Catalina" # install &quo…

基于springboot的二手物品管理系统的设计与实现 (含源码+sql+视频导入教程)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于springboot的二手物品管理系统9拥有三种角色 管理员:用户管理、卖家管理、分类管理、商品管理、订单管理、求购管理、留言管理等 用户:登录注册、购买、收藏、…

宴会中的白酒品鉴技巧,让你成为焦点人物

在宴会中,一杯白酒往往能成为连接人与人之间的纽带,而掌握白酒品鉴技巧,则能让你在觥筹交错间成为众人瞩目的焦点。今天,我们就来谈谈宴会中的白酒品鉴技巧,以豪迈白酒(HOMANLISM)为例&#xff…