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

【自动化测试】使用Python selenium类库模拟手人工操作网页

使用Python selenium类库模拟手人工操作网页

  • 背景
  • 准备工作
    • 安装Python版本
    • 安装selenium类库
    • 下载selenium驱动
    • 配置本地环境变量
  • 自动化脚本输出
    • 页面表单自动化填充相关代码

背景

  • 待操作网页必须使用IE浏览器登录访问
  • 用户本地只有edge浏览器,通过edge浏览器IE模式访问指定网页

验证结论:
selenium不支持通过edge浏览器IE模式控制网页。

目的:
通过本次实践,本文详细描述selenium使用过程,如环境配置方法以及基础网页表单填充,按钮点击等操作。

准备工作

安装Python版本

python官网下载python版本,推荐稳定发布版本,如python 3.13.2

安装selenium类库

打开本地cmd窗口,执行以下命令下载selenium类库

pip install selenium

查看selenium Python类库官方文档,各版本功能介绍等。

下载selenium驱动

chrome,edge,Firefox等高级浏览器驱动在selenium官网获取,IE浏览器驱动可以下载附件,包含32位和64位版本。

配置本地环境变量

为保证Python脚本正常读取webDriver驱动文件,须配置环境变量,对应值为驱动所在目录。
在这里插入图片描述

自动化脚本输出

python脚本运行自动初始化打开浏览器,相关代码如下。

注意:只能重新打开浏览器,不能基于已打开网页操作,各位酌情选择。

def init_driver(logger, browser_name, url):options = Options()# 脚本运行完不关闭网页options.add_experimental_option("detach", True)# 禁用扩展options.add_experimental_option('useAutomationExtension', False)# 添加agent头,绕过IE浏览器检查options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36')if browser_name == 'IE':# 继承个人主机配置,保留IE模式打开edge浏览器能力# options.add_argument(#     "--user-data-dir=C:\\Users\\杨鹏\\AppData\\Local\\Microsoft\\Edge\\User Data")  # 替换为你的实际用户数据目录路径options.add_argument("--profile-directory=Default")  # 使用默认配置文件driver = webdriver.Ie(options=options)elif browser_name == 'Edge':options.use_chromium = True  # Ensure we are using the Chromium-based Edgeoptions.add_experimental_option("excludeSwitches", ["enable-automation"])  # 避免 WebDriver 检测driver = webdriver.Edge(options=options)else:logger.error("Unsupported browser. Use 'IE' or 'Edge'.")raise ValueError("Unsupported browser. Use 'IE' or 'Edge'.")return driver

页面表单自动化填充相关代码

通过页面元素id等关键信息,定位页面元素,自动填充,包括文本框或者下拉列表选择。

def login(driver, url, username, password, user_phone):driver.get(url)username_input = driver.find_element(By.ID, 'tbUploadEndDate5')username_input.send_keys(username)password_input = driver.find_element(By.ID, 'tbUploadEndDate22')password_input.send_keys(password)# 图片验证码validate_code_input = driver.find_element(By.ID, 'validateCode')validate_code = input("请输入自动打开页面上的验证码计算结果: ")validate_code_input.send_keys(validate_code)# 找到手机号下拉列表元素user_phone_select_input = driver.find_element(By.ID, "userPhone")  # 使用适当的定位器# 创建Select对象user_phone_select = Select(user_phone_select_input)# 根据文本选择选项user_phone_select.select_by_visible_text(user_phone)# 短信验证码发送verification_code_input = driver.find_element(By.ID, 'verificationCode')send_msg_button = driver.find_element(By.ID, 'sendBtn')# send_msg_button.click()verification_code = input("请输入您收到的短信验证码: ")# 短信验证码verification_code_input.send_keys(verification_code)login_img = driver.find_element(By.XPATH, "//td/img[@onclick='javascript:submitform();']")login_img.click()# 等待登录成功(可以根据实际情况调整等待条件)WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.ID, 'some_element_after_login')))

相关文章:

【自动化测试】使用Python selenium类库模拟手人工操作网页

使用Python selenium类库模拟手人工操作网页 背景准备工作安装Python版本安装selenium类库下载selenium驱动配置本地环境变量 自动化脚本输出页面表单自动化填充相关代码 背景 待操作网页必须使用IE浏览器登录访问用户本地只有edge浏览器,通过edge浏览器IE模式访问…...

【Apache Paimon】-- 15 -- 利用 paimon-flink-action 同步 postgresql 表数据

利用 Paimon Schema Evolution 核心特性同步变更的 postgresql 表结构和数据 1、背景信息 在Paimon 诞生以前,若 mysql/pg 等数据源的表结构发生变化时,我们有几种处理方式 (1)人工消息通知,然后手动同步到数据仓库中(2)使用 flink 消费 DDL binlog ,然后自动更新 Hi…...

PostgreSql-COALESCE函数、NULLIF函数、NVL函数使用

COALESCE函数 COALESCE函数是返回参数中的第一个非null的值,它要求参数中至少有一个是非null的; select coalesce(1,null,2),coalesce(null,2,1),coalesce(null,null,null); NULLIF(ex1,ex2)函数 如果ex1与ex2相等则返回Null,不相等返回第一个表达式的值…...

springboot+vue导入ruoyi项目的框架

一、介绍 RuoYi-Vue版本,采用了前后端分离的单体架构设计软件环境:JDK、Mysql、Redis、Maven、Node技术选型: Spring Boot、Spring Security、MyBatis、Jwt、Vue3、Element-Plus官方地址: https://gitee.com/y_project/RuoYi-Vue 官方推荐的版本如下&a…...

金蛇祈福,鸿运开年!广州白云皮具城2025开市大吉!

锣鼓一响,黄金万两!2月6日大年初九,广州白云皮具城举行盛大的醒狮开市仪式!象征吉祥如意的醒狮,将好运、财运传递给全体商户和八方来客。 醒狮点睛 金鼓一响黄金万两,十头醒狮登台,董事总经理刘…...

DeepSeek本地化部署

文章目录 前言一、主机配置二、工具下载Ollama下载安装退出Ollama下载DeepSeek R1模型下载安装ChatBox实现可视化交互ChatBox设置模型 前言 最近的国产大模型DeepSeek横空出事,笔者也关注了下。网页版的免费而且推理速度很快,重量级的是它把自己详细的推…...

MoviePy,利用Python自动剪辑tiktok视频

Python剪辑视频是非常强大的,而且能流水线批量操作,可以使用MoviePy库实现。 最近看到一个Github项目,作者利用Python写了一个自动生成tiktok视频的脚本,受到热捧。 现在像抖音、tiktok上有很多流水线生产的视频,不少…...

ubuntu20.04+RTX4060Ti大模型环境安装

装显卡驱动 这里是重点,因为我是跑深度学习的,要用CUDA,所以必须得装官方的驱动,Ubuntu的附件驱动可能不太行. 进入官网https://www.nvidia.cn/geforce/drivers/,选择类型,最新版本下载。 挨个运行&#…...

2024~2025学年佛山市普通高中教学质量检测(一)【高三数学】

一、选择题 本题共8小题&#xff0c;每小题5分&#xff0c;共40分。在每小题给出的四个选项中。只有一项是符合题目要求的。 1、若 5 z 2 i 1 \frac{5}{z}2i1 z5​2i1&#xff0c;则 z z z A. 1-2i B. 12i C. 2-i D. 2i2、已知集合 A { x ∣ 1 < x < a } A\left\{…...

管理etcd的存储空间配额

如何管理etcd的存储空间配额 - 防止集群存储耗尽指南 本文基于etcd v3.4官方文档编写 为什么需要空间配额&#xff1f; 在分布式系统中&#xff0c;etcd作为可靠的键值存储&#xff0c;很容易成为系统瓶颈。当遇到以下情况时&#xff1a; 应用程序频繁写入大量数据未及时清理…...

备战蓝桥杯-洛谷

今天打算写一些洛谷上面的题目 P10904 [蓝桥杯 2024 省 C] 挖矿 https://www.luogu.com.cn/problem/P10904 看了大佬写的题解才写出来这道题的&#xff1a;题解&#xff1a;P10904 [蓝桥杯 2024 省 C] 挖矿 - 洛谷专栏 思路&#xff1a; 这是一道贪心的题目&#xff0c;用…...

在线免费 HTML 预览导出为图片,并且支持水平切割

在线体验 作用&#xff1a;可以直接预览 html 的页面效果&#xff0c;导出为图片&#xff0c;支持指定切割的数量&#xff0c;等高水平切割。 https://houbb.github.io/tools/html-preview.html 创作背景 有时候希望给一段 html 导出为长度&#xff0c;或者水平切分&#xff…...

洛谷题目: P2996 [USACO10NOV] Visiting Cows G 题解

题目传送门&#xff1a; P2996 [USACO10NOV] Visiting Cows G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 前言&#xff1a; 本题的核心问题是在一棵由奶牛&#xff08;节点&#xff09;和道路&#xff08;边&#xff09;构成的树状结构中&#xff0c;根据 “不能同时拜…...

告别手动操作!用Ansible user模块高效管理 Linux账户

在企业运维环境中&#xff0c;服务器的用户管理是一项基础但非常重要的任务。比如&#xff0c;当有新员工加入时&#xff0c;我们需要在多台服务器上为他们创建账户并分配合适的权限。而当员工离职或岗位发生变化时&#xff0c;我们也需要迅速禁用或删除他们的账户&#xff0c;…...

java 8 在 idea 无法创建 java spring boot 项目的 变通解决办法

java 8 在 idea 无法创建 java spring boot 项目的 变通解决办法 spring boot 3 官方强制 要用 java 17 &#xff0c;但是 不想安装java 17的 &#xff0c;但是又想 使用 spring boot &#xff0c;可以这样 &#xff1a; 在这个网站 https://start.aliyun.com/ 选择 你相对…...

javaEE初阶————多线程初阶(3)

大家新年快乐呀&#xff0c;今天是第三期啦&#xff0c;大家前几期的内容掌握的怎么样啦&#xff1f; 1&#xff0c;线程死锁 1.1 构成死锁的场景 a&#xff09;一个线程一把锁 这个在java中是不会发生的&#xff0c;因为我们之前讲的可重入机制&#xff0c;在其他语言中可…...

eggnog后kegg结果提取和注释

首先进入KEGG BRITE: KEGG Orthology (KO) 下载json文件 用python处理一下 import json import re import osos.chdir("C:/Users/fordata/Downloads/") with open("ko00001.json","r") as f:fj f.read()kojson json.loads(fj)with open(&qu…...

shell脚本控制——处理信号

Linux利用信号与系统中的进程进行通信。你可以通过对脚本进行编程&#xff0c;使其在收到特定信号时执行某些命令&#xff0c;从而控制shell脚本的操作。 1.重温Linux信号 Linux系统和应用程序可以产生超过30个信号。下表列出了在shell脚本编程时会遇到的最常见的Linux系统信…...

Doris更新某一列数据完整教程

在Doris,要更新数据,并不像mysql等关系型数据库那样方便,可以用update set来直接更新某个列。在Doris只能进行有限的更新,官方文档如下: UPDATE - Apache Doris 1、使用Doris自带的Update功能 描述​ 该语句是为进行对数据进行更新的操作,UPDATE 语句目前仅支持 UNIQUE…...

VIVADO生成DCP和EDF指南

VIVADO生成DCP和EDF 文章目录 VIVADO生成DCP和EDF前言一、DCP封装二、EDF封装 前言 详细步骤就不贴图了&#xff0c;网上一大堆 在Vivado中&#xff0c;常用的三种封装形式有三种&#xff1a; ● IP ● edif ● dcp 在下文之前&#xff0c;先看几个概念 out_of_context&…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...