当前位置: 首页 > news >正文

web自动化测试基础(从配置环境到自动化实现登录测试用例的执行,vscode如何导入自己的python包)

接下来的一段时间里我会和大家分享自动化测试相关的一些知识希望大家可以多多支持,一起进步。

一、环境的配置

前提安装好了python解释器并配好了环境,并安装好了VScode
下载的浏览器和浏览器驱动需要一样的版本号(只看大版本)。

1、安装浏览器

Chrome浏览器下载地址,点链接接后,根据自己的操作系统选择不同的版本,windows就下载win版本的,linux就下linux版本的。推荐大家下载stable下的版本,比较稳定,如果已经安装好浏览器的可以通过下图查看自己的版本号。
在这里插入图片描述

2、安装浏览器相关驱动

Chromedriver浏览器驱动压缩包下载地址,安装的驱动版本要和浏览器版本一致。

3、将驱动中的快捷方式添加到python解释器路径下

打开下载好的驱动压缩包,解压缩,将文件按中的chromedriver.exe文件复制到你的python安装路径下面。图中是已经完成后的截图。
在这里插入图片描述
如何查看自己的python安装路径按住快捷键win+r,弹出的运行框内输入cmd,然后输入where python即可查看自己的python安装路径。
在这里插入图片描述

4、安装selenium

打开python安装路径,点击文件路径栏输入cmd按回车,然后输入pip install selenium,指令就可以等待selenium安装了。
在这里插入图片描述
安装好后在vscode中运行如下代码,如果可以自动打开浏览器并访问百度页面后关闭就是所有东西准备就绪了。

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
# 打开浏览器
driver = webdriver.Chrome()
driver.maximize_window()
# 访问登录页
driver.get("https://www.baidu.com/")
time.sleep(10)
# 关闭浏览器
driver.quit()

二、web自动化测试五大步骤

1、导入包

import time
#这两个包是必须要导入的
from selenium import webdriver
from selenium.webdriver.common.by import By

2、打开浏览器

通过webdriver创建一个chrome浏览器,并于变量driver来接收。

driver = webdriver.Chrome()
#最大化浏览器窗口
driver.maximize_window()

3、访问登陆页面

利用get方法打开你要操作的页面。

driver.get("https://www.baidu.com/")

4、执行相关操作

就可以执行你要执行的操作。先元素定位,然后调用方法就可以实现具体操作。
下面是一个实现登录的例子。自动输入账号密码验证码等等。

# 操作
# 用户名
# driver.find_element(By.ID,'username').send_keys('admin')
# 通过driver.find_elements,获取一组数据,返回的是一个列表,可以用列表的索引来赋值。
driver.find_elements(By.CLASS_NAME,'login-text1')[0].send_keys('admin')
# 密码
driver.find_elements(By.CLASS_NAME,'login-text1')[1].send_keys('HM_2023_test')
# 验证码0
driver.find_elements(By.CLASS_NAME,'login-text1')[2].send_keys('8888')
# 登录按钮
driver.find_element(By.CLASS_NAME,'login-button').click()

5、关闭浏览器

最后关闭并退出浏览器

driver.quit()

三、如何在各种路径下导入自定义包

1、同级目录下如何导入包

因为python一切皆对象所以只要是.py文件就可以当作包来引用。
同级目录下导入自己的包只需要import 包名,就可以导入自己的包,调用自己包里的方法 。

import 包名

如果只想导入包里的某些方法就可以from 包名 import 方法名1,方法名2
例如

from ChromDriver import getDriver,quitDriver

2、如何导入同级目录的下的下级目录的包

from 文件名.包名 import 方法名1,方法名2
例如

from tools.ChromDriver import getDriver,quitDriver

3、如何导入上级目录下的下级目录的包

如图,longin.py里面如何引入ChromeDriver.py里面的方法呢。因为Python在导入包的时候,会对包所在的路径进行搜索,并且这个搜索是有优先级的。

  • 首先是当前目录:Python首先检查当前的工作目录。
  • 其次PYTHONPATH,这是环境变量,包含了一系列目录路径,Python会在此查找。
  • 然后是安装的第三方库:Python会检查在site-packages目录下的第三方库。
  • 最后,Python会检查内置的标准库。

这样我们如图所示的文件就完美的避开了所有的搜索,所以我们需要告诉编译器我们导入包的位置用sys.path.append方法,让编译器在我们告诉它的目录下搜索,这个目录就是这两个包的根目录,也就是scrpits和tools的上级目录hm_test_zidonghua。总体的目录层级示意图如下
在这里插入图片描述

import sys
# 当导入包时,一定要包含这个包的根目录
sys.path.append(r"D:\mypython\hm_test_zidonghua") 

在这里插入图片描述

四、利用随机数填写随机的电话号码

当我们需要利用自动化注册很多账号时,我们不可以每次运行都在代码里改我们输入的电话号码,所以我们需要随机输入电话号码,这就需要用到格式化输出f表达式 (f’153{11110000,88887777}’ )该表达式{ }里面的值会直接替换字符串中的内容起到随机输入电话号码的作用 。

driver.find_elements(By.CLASS_NAME,'login-text1')[0].send_keys(f'153{11110000,88887777}')

相关文章:

web自动化测试基础(从配置环境到自动化实现登录测试用例的执行,vscode如何导入自己的python包)

接下来的一段时间里我会和大家分享自动化测试相关的一些知识希望大家可以多多支持,一起进步。 一、环境的配置 前提安装好了python解释器并配好了环境,并安装好了VScode 下载的浏览器和浏览器驱动需要一样的版本号(只看大版本)。 1、安装浏览器 Chro…...

鸿蒙 Next 实战: 电子木鱼

前言 正所谓:Hello Word 是程序员学任何一门语言的第一个程序实践。这其实也是一个不错的正反馈,那如何让学习鸿蒙 Next 更有成就感呢?下面就演示一下从零开发一个鸿蒙 Next 版的电子木鱼,主打就是一个抽象! 实现要点…...

SQLite SQL调优指南及高级SQL技巧

记忆已更新 以下是《SQLite SQL调优指南及高级SQL技巧》文章的完整输出,字数目标为30000字,详细介绍并结合2024年最新技术趋势和优化策略。代码部分不计入字数统计。 SQLite SQL调优指南及高级SQL技巧 SQLite 是广泛使用的嵌入式数据库,因其…...

WordPress 6.7即将发布的新功能(和截图)

我们一直在密切关注 WordPress 6.7 的开发并测试该版本的测试版,它将带来一些令人兴奋的更新和几个新功能。 例如,我们很高兴地发现即将发布的版本将附带全新的默认主题,并对块编辑器和站点编辑体验进行大规模改进。 在本文中,我…...

SpringBoot整合QQ邮箱

SpringBoot可以通过导入依赖的方式集成多种技术,这当然少不了我们常用的邮箱,现在本章演示SpringBoot整合QQ邮箱发送邮件.... 下面按步骤进行: 1.获取QQ邮箱授权码 1.1 登录QQ邮箱 1.2 开启SMTP服务 找到下图中的SMTP服务区域,…...

低质量数据的多模态融合方法

目录 多模态融合 低质量多模态融合的核心挑战 噪声多模态数据学习 缺失模态插补 平衡多模态融合 动态多模态融合 启发式动态融合 基于注意力的动态融合 不确定性感知动态融合 论文 多模态融合 多模态融合侧重于整合多种模态的信息,以实现更准确的预测,在自动驾驶、…...

计算机毕业设计 基于Django的在线考试系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...

Shell脚本linux登录自动检查

.bashrc 用于设置用户的 Bash shell 环境&#xff0c;在每次打开一个新的终端窗口或启动一个新的 Bash 会话时被执行 代码 login_check.sh #!/bin/bash clear LogFileNamepolling.$(date %F-%T) EchoFormat$(for (( i0; i<30; i )); do echo -n ""; done)# 显示…...

Golang | Leetcode Golang题解之第450题删除二叉搜索树的节点

题目&#xff1a; 题解&#xff1a; func deleteNode(root *TreeNode, key int) *TreeNode {var cur, curParent *TreeNode root, nilfor cur ! nil && cur.Val ! key {curParent curif cur.Val > key {cur cur.Left} else {cur cur.Right}}if cur nil {retur…...

Linux 之 Linux应用编程概念、文件IO、标准IO

Linux应用编程概念、文件IO、标准IO 学习任务&#xff1a; 1、 学习Linux 应用开发概念&#xff0c;什么是系统调用&#xff0c;什么是库函数 2、 学习文件IO&#xff1a;包括 read、write、open、close、lseek 3、 深入文件IO&#xff1a;错误处理、exit 等 4、 学习标准IO&a…...

PDF处理技巧:Windows电脑如何选择合适的 PDF 编辑器

您可以阅读本文以了解用于在 PC 上编辑 PDF 的顶级免费软件&#xff0c;而无需花费任何费用即可轻松进行快速编辑、拆分、合并、注释、转换和共享您的 PDF。 PDF 或可移植文档文件是由 Adobe 创建的一种多功能文件格式。它可以帮助您轻松可靠地交换文档&#xff0c;无论相关方…...

【c++】初步了解类和对象2

1、类的作用域 类定义了一个新的作用域&#xff0c;类的所有成员都在类的作用域中。在类体外定义成员时&#xff0c;需要使用 :: 作用域操作符指明成员属于哪个类域。 如图&#xff0c;此时在类内声明了函数firstUniqChar()&#xff0c;在类外进行了函数体的具体定义。 但是却…...

Python库pandas之四

Python库pandas之四 输入/输出read_json函数应用实列 输入/输出 read_json 函数 词法&#xff1a;pandas.read_json(path_or_buf, *, orientNone, typ‘frame’, dtypeNone, convert_axesNone, convert_datesTrue, keep_default_datesTrue, precise_floatFalse, date_unitNo…...

网络攻防技术--第三次作业

文章目录 第三次作业一、通过搜索引擎搜索自己在因特网上的足迹&#xff0c;并确认是否存在隐私和敏感信息泄露问题。如果有信息泄露&#xff0c;提出解决方法。二、结合实例总结web搜索和挖掘的方法。三、网络扫描有哪几种类型&#xff1f;分别有什么作用&#xff1f;利用一种…...

带隙基准Bandgap电路学习(一)

一、原理图 Bandgap中的运放&#xff08;折叠式Cascode&#xff09;采用P输入对&#xff0c;是因为运放输入端接的PNP三极管发射极端的电位&#xff0c;电压小&#xff0c;为了确保输入对管能够饱和工作&#xff0c;故采用P输入对管。此外&#xff0c;P管作为输入管&#xff0c…...

[前端][easyui]easyui select 默认值

function initRegion(key, val) {$(#Region).combobox({url: path /getTypeVaule.do?itemregion&key key "&value" val,editable: false, //不可编辑状态cache: false,valueField: TEMID,textField: TEMID,loadFilter: function (data) {data.unshift({…...

项目开发--大模型--个人问答知识库--chain控制

背景 1、langchain当中的chain prompt | llm | output_parser这个链能更长吗&#xff1f; 在 LangChain 中&#xff0c;链&#xff08;chain&#xff09;可以根据需要变得非常长&#xff0c;并且可以包含多种不同类型的组件。链的目的是将多个步骤串联起来&#xff0c;以便以…...

STM32—SPI通讯协议

前言 由于I2C开漏外加上拉电阻的电路结构&#xff0c;使得通信线高电平的驱动能力比较弱&#xff0c;这就会号致&#xff0c;通信线由候电平变到高电平的时候&#xff0c;这个上升沿耗时比较长&#xff0c;这会限制I2C的最大通信速度&#xff0c; 所以&#xff0c;I2C的标准模…...

Android 安装过程五 MSG_INSTALL消息的处理 安装

现在马上进入正式的安装流程。   从前面文章 Android 安装过程四 MSG_INSTALL消息的处理 安装之前的验证知道&#xff0c;在验证之后没有什么问题的情况下&#xff0c;会回调onVerificationComplete()方法&#xff0c;它位于PackageInstallerSession类中。 private void onVe…...

大数据开发--1.3 Linux的常用命令大全

目录 一. 终端命令格式 命令格式 说明&#xff1a; 二. 显示文件列表命令 -ls 作用 格式 ls常用选项 案例 三. 目录操作命令 -pwd 作用 格式 案例 四. 目录操作命令 -cd 作用 格式 案例 五. 目录操作命令 -mkdir 作用 格式 案…...

深度解析JetBrains IDE试用期重置:3种实用方案提升开发效率

深度解析JetBrains IDE试用期重置&#xff1a;3种实用方案提升开发效率 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter JetBrains IDE试用期重置工具是一款开源项目&#xff0c;专为开发者提供重置IntelliJ IDEA、…...

别盲目冲网安!普通本科转行 5 年月薪 2 万 +,掏心窝子真话

别盲目冲网安&#xff01;普通本科转行5年&#xff0c;月薪2万的真心话 网安行业确实火&#xff0c;但真话难听&#xff1a;这行超卷&#xff0c;缺的是能干活的实战派&#xff0c;不是凑数的小白。 我普通本科出身&#xff0c;转行网安5年&#xff0c;如今月薪2万&#xff0…...

Graphormer保姆级教学:Supervisor配置文件(graphormer.conf)逐行注释

Graphormer保姆级教学&#xff1a;Supervisor配置文件&#xff08;graphormer.conf&#xff09;逐行注释 1. Graphormer简介 Graphormer是一种基于纯Transformer架构的图神经网络&#xff0c;专门为分子图&#xff08;原子-键结构&#xff09;的全局结构建模与属性预测而设计…...

Phi-4-mini-reasoning应用场景:AI竞赛教练系统自动出题与解析

Phi-4-mini-reasoning应用场景&#xff1a;AI竞赛教练系统自动出题与解析 1. 引言&#xff1a;当AI遇见竞赛训练 想象一下&#xff0c;一位数学竞赛教练每天需要&#xff1a; 设计不同难度的题目准备详细的解题步骤针对学生错误提供个性化解析不断更新题库保持新鲜度 传统方…...

OpenClaw截图分析进阶:千问3.5-9B识别UI元素与操作建议

OpenClaw截图分析进阶&#xff1a;千问3.5-9B识别UI元素与操作建议 1. 为什么需要截图分析能力&#xff1f; 上周我在测试一个内部工具时遇到了一个典型问题——某个按钮在特定分辨率下会消失不见。手动排查需要反复调整窗口尺寸并肉眼检查&#xff0c;效率极低。这时我想到了…...

Redis 竞品与替代方案选型可行性分析报告

Redis 竞品与替代方案选型可行性分析报告 一、引言 Redis 作为内存数据库领域的标杆产品&#xff0c;凭借其高性能、丰富的数据结构和成熟的生态系统&#xff0c;在缓存、消息队列、实时计算等场景占据主导地位。然而&#xff0c;随着云原生架构的普及、数据规模的爆炸式增长以…...

基于 PLC 的自动门控制系统设计与仿真程序探索

基于plc的自动门控制系统设计 仿真程序资料在自动化控制领域&#xff0c;基于 PLC&#xff08;可编程逻辑控制器&#xff09;的自动门控制系统应用广泛。今天咱就唠唠这基于 PLC 的自动门控制系统设计以及相关的仿真程序资料。 自动门控制系统设计需求 自动门要实现多种功能&a…...

【Python内存管理终极指南】:20年专家亲授智能内存优化策略与OOM报错秒级修复方案

第一章&#xff1a;Python智能体内存管理策略Python智能体&#xff08;如基于LLM的Agent、ReAct框架实例或自主任务规划器&#xff09;在运行过程中常面临对象生命周期动态、引用关系复杂、中间状态缓存频繁等挑战。其内存管理不能仅依赖CPython默认的引用计数与循环垃圾回收&a…...

告别重复配置:用快马AI自动化生成规范化的软件安装包项目

今天想和大家分享一个提升开发效率的小技巧——如何用InsCode(快马)平台快速生成规范化的Python安装包项目。作为一个经常需要打包工具给团队使用的开发者&#xff0c;我深刻体会到手动配置各种安装文件的痛苦&#xff0c;直到发现了这个能自动化生成项目骨架的神器。 传统安装…...

IUV5G数字室分酒店项目实战:从勘察到验收的避坑指南

1. 站点勘察&#xff1a;这些细节不注意会让你返工 第一次做酒店5G室分项目时&#xff0c;我在勘察环节踩过不少坑。记得有次因为没注意电梯井的测量方式&#xff0c;导致后期设计方案全部推翻重做。下面这些实战经验&#xff0c;能帮你省去至少50%的返工时间。 经纬度记录有个…...