当前位置: 首页 > 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&…...

【仿生机器人】仿生机器人认知-情感系统架构设计报告

来自 gemini 2.5 1. 执行摘要 本报告旨在为仿生机器人头部设计一个全面的认知-情感软件架构&#xff0c;以实现自然、情感智能的互动。拟议的架构将使机器人能够像人类一样&#xff0c;动态生成情绪、进行复杂的表情表达&#xff08;包括情绪掩饰&#xff09;、拥有强大的记忆…...

网络协议入门:TCP/IP五层模型如何实现全球数据传输?

&#x1f50d; 开发者资源导航 &#x1f50d;&#x1f3f7;️ 博客主页&#xff1a; 个人主页&#x1f4da; 专栏订阅&#xff1a; JavaEE全栈专栏 内容&#xff1a; 网络初识什么是网络&#xff1f;关键概念认识协议五元组 协议分层OSI七层模型TCP/IP五层&#xff08;四层&…...

Java中如何枚举正则表达式捕获组的名字

在使用正则表达式在匹配文本时&#xff0c;除了可以通过表达式捕获命中的文本串外&#xff0c;还可以对捕获的文本串进行命名。尤其是在解析日志的场景中&#xff0c;经常会被用到。表达式如下&#xff1a; \<(?<pri>\d)\>(?<time>.*) (?<host>\S)…...

【Python Cookbook】文件与 IO(一)

文件与 IO&#xff08;一&#xff09; 1.读写文本数据2.打印输出至文件中3.使用其他分隔符或行终止符打印4.读写字节数据5.文件不存在才能写入 1.读写文本数据 你需要读写各种不同编码的文本数据&#xff0c;比如 ASCII&#xff0c;UTF-8 或 UTF-16 编码等。 使用带有 rt 模式…...

css3 新增属性/滤镜效果/裁剪元素/图片适应盒子/定义和使用变量/恢复默认initial

从 CSS3 发布至今&#xff0c;CSS 标准引入了大量新特性&#xff0c;极大地丰富了前端开发的能力。以下是 CSS3 之后的重要新增属性、模块与特性总结&#xff0c;涵盖布局、动画、交互、视觉、选择器、单位等多个领域。 &#x1f3a8; 视觉与效果增强 属性/功能作用示例filte…...

vscode中launch.json、tasks.json的作用及实例

文章目录 launch.json是什么作用多环境调试简单实例进阶使用核心配置项解析调试第三方程序 launch.json是什么 顾名思义&#xff1a;它是在.vscode文件夹下的launch.json&#xff0c;所以是vscode启动调试的配置文件。总结&#xff1a;通过定义调试参数、环境变量和启动方式&a…...

Django数据库连接报错 django.db.utils.NotSupportedError: MySQL 8 or later is required

可尝试换django版本 pip install django3.2.13 另外mysql下载地址 https://dev.mysql.com/downloads/installer/ 安装可以参考&#xff1a; https://blog.csdn.net/HHHQHHHQ/article/details/148125549 重点&#xff1a;用户变量添加 C:\Program Files\MySQL\MySQL Server …...

深度学习驱动的超高清图修复技术——综述

Deep Learning-Driven Ultra-High-Definition Image Restoration: A Survey Liyan Wang, Weixiang Zhou, Cong Wang, Kin-Man Lam, Zhixun Su, Jinshan Pan Abstract Ultra-high-definition (UHD) image restoration​​ aims to specifically solve the problem of ​​quali…...

@Pushgateway自定义脚本推送数据

文章目录 Pushgateway 自定义脚本推送数据1. 目的2. 适用范围3. 前提条件4. 操作流程4.1 确定指标类型和格式4.2 编写推送脚本方法一:使用 curl 命令行推送方法二:使用 Python 脚本推送方法三:使用 Python 客户端库推送4.3 设置定时任务4.4 验证数据5. 高级配置5.1 使用基本…...

lvs-keepalived高可用群集

目录 1.Keepalived 概述及安装 1.1 Keepalived 的热备方式 1.2 keepalived的安装与服务控制 &#xff08;1&#xff09;安装keep alived (2)控制 Keepalived 服务DNF 安装 keepalived 后,执行以下命令将keepalived 服务设置为开机启动。 2.使用 Keepalived 实现双机热备 …...