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

【05】Selenium+Python 两种文件上传方式(AutoIt)

上传文件的两种方式

一、input标签上传文件

在这里插入图片描述

可以用send_keys方法直接上传文件
示例代码

'''
input标签上传文件
'''
import time
from selenium import webdriver
from chromedriver_py import binary_path # this will get you the path variable
from selenium.webdriver.common.by import By  # 导入 By 模块#打印浏览器驱动路径
print(binary_path)
svc = webdriver.ChromeService(executable_path=binary_path)
driver = webdriver.Chrome(service=svc)try:# 打开上传文件网页driver.get("http://sahitest.com/demo/php/fileUpload.htm")time.sleep(2)# 找到上传文件按钮并上传文件driver.find_element(By.ID, "file").send_keys("D:\\ApowerRECData\\byid.png")time.sleep(5)
finally:# 关闭浏览器driver.quit()

二、非input标签上传文件,比如div或者其他的标签

在这里插入图片描述

这种不能直接在网页上处理上传,只能打开OS弹窗,去处理弹窗。
对于OS弹窗涉及的层面已经不是selenium能解决的了,只能用OS层面的操作去处理。
AutoIt 可以做OS层面的操作,我们可以用AutoIt编写OS层面的操作脚本,再用Python去调用。

1、AutoIt操作

(1)下载安装
官网下载地址:https://www.autoitscript.com/site/autoit/downloads/
在这里插入图片描述
下载后按步骤安装即可

(2)查找上传文件弹窗对应属性值

打开需要上传文件的页面,点击上传,打开文件上传弹窗
在这里插入图片描述

从开始菜单打开AutoIt Window Info (x64)
在这里插入图片描述

把Finder Tool中间的圆圈拖动到文件名的位置,获取弹窗和文件名的值
在这里插入图片描述
在这里插入图片描述

把Finder Tool中间的圆圈拖动到打开按钮的位置,获取打开按钮的值
在这里插入图片描述

(3)编写AutoTt上传文件脚本
从开始菜单打开SciTE Script Editor,将获取到的信息编写成脚本
在这里插入图片描述
代码:

; 等待5秒钟,让上传窗口出现
WinWait("[CLASS:#32770]","",5);把输入焦点定位到上传输入文本框中,类型为Edit,编号为1,也就是上面获取到内容
ControlFocus("打开", "","Edit1")  ;在文件名那里,输入需要上传的文件绝对路径
ControlSetText("打开", "", "Edit1", 'D:\ApowerRECData\byid2.png');等待上传时间,单位是毫秒 1= 1000 毫秒,文件大的话需要设置长点
Sleep(5000);点击"打开"按钮,也就是上传,完成整个上传过程
ControlClick("打开", "","Button1");

一个问题:
注释中文在脚本中显示为乱码,出现这个问题可以参考这篇博客解决:https://blog.csdn.net/ldq_sd/article/details/116587438

完成后,可以在网页打开文件上传弹窗,在脚本里按F5 或点Tools-go 运行脚本
在这里插入图片描述

(4)把脚本转为exe可执行文件
从开始菜单打开Compile Script to .exe (x64),把脚本转为exe可执行文件
在这里插入图片描述

2、使用python调用可执行文件

使用os模块的os.system()方法调用可执行文件

import os#执行保存的exe文件 注意这个文件路径不要有中文和空格,不然可能执行不了脚本
os.system(r'D:\1.exe')

3、完整Selenium代码

	#查找上传文件并点击WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='el-upload-dragger']"))).click()# 这个等待时间必须要有,等待文件上传弹窗出现,不然执行不了脚本time.sleep(5)#执行上传文件脚本 注意这个文件路径不要有中文和空格,不然可能执行不了脚本os.system(r'D:\1.exe')time.sleep(2)

4、AutoIt参数化

按照之前的脚本代码,上传其他的文件,就要重新写一次脚本,重新转换为exe,非常麻烦,可以将脚本里的文件名进行参数化,后面执行只需要传对应文件名即可。
(1)修改脚本,重新转换为可执行文件
只用将之前脚本里面的文件路径改为参数 $CmdLine[1] 即可
在这里插入图片描述

; 等待5秒钟,让上传窗口出现
WinWait("[CLASS:#32770]","",5);把输入焦点定位到上传输入文本框中,类型为Edit,编号为1,也就是上面获取到内容
ControlFocus("打开", "","Edit1")  ;在文件名那里,输入需要上传的文件绝对路径
ControlSetText("打开", "", "Edit1", $CmdLine[1]);等待上传时间,单位是毫秒 1= 1000 毫秒,文件大的话需要设置长点
Sleep(5000);点击"打开"按钮,也就是上传,完成整个上传过程
ControlClick("打开", "","Button1");

然后同样的,将脚本转换为exe可执行文件

(2)python调用
使用参数化调用可执行文件,需要把可执行文件放在python路径下才行
在这里插入图片描述
python代码

'''
上传文件
参数化调用可执行文件
'''
import osfile_path = 'D:\\ApowerRECData\\autoit5.png'
#执行保存的exe文件
os.system('2.exe %s '% file_path)

相关文章:

【05】Selenium+Python 两种文件上传方式(AutoIt)

上传文件的两种方式 一、input标签上传文件 可以用send_keys方法直接上传文件 示例代码 input标签上传文件import time from selenium import webdriver from chromedriver_py import binary_path # this will get you the path variable from selenium.webdriver.common.by i…...

Python网络编程

网络编程 Socket(套接字) socket 位于 网络协议中的 数据传输层、 该层 主要 可以通过 UDP 或者 TCP协议 实现 数据的传输 TCP 协议 VS UDP协议 tcp : 是一个 可靠的 ,面向 连接的协议。 数据在网络传输中 是安全的,不易丢失的。 TCP连接 在建立的时候&…...

openssl生成ca证书

常见CA文件夹 1、生成CA钥匙 openssl genrsa -out ./private/cakey.pem 2、生成CA自签名 openssl req -new -x509 -key ./private/cakey.pem -out ./cacert.crt -days 3650 3、生成http服务器私钥 openssl genrsa -out ./data/frontt.project.com.key 2048 4、CA给http服务器…...

Oracle RAC 环境下数据文件误建在本地目录的处理过程

问题描述 在 Oracle RAC 环境中,有时会误将数据文件创建在本地目录,导致其他节点无法访问该数据文件,从而报出 ORA-01157 和 ORA-01110 错误。 问题分析 错误日志 Mon Nov 16 19:02:38 2021 Errors in file /u01/app/oracle/diag/rdbms/orc…...

新质驱动·科东软件受邀出席2024智能网联+低空经济暨第二届湾区汽车T9+N闭门会议

为推进广东省加快发展新质生产力,贯彻落实“百县千镇万村高质量发展工程”,推动韶关市新丰县智能网联新能源汽车、低空经济与数字技术的创新与发展,充分发挥湾区汽车产业链头部企业的带动作用。韶关市指导、珠三角湾区智能网联新能源汽车产业…...

windows11 使用体验记录

好的地方: UI上字体风格貌似更好看了,文件夹增加了多个标签,类似于浏览器既可以打开多个窗口,也可以在同一个窗口中打开多个标签页 不好的地方: 桌面右下角点击日期时间,显示日期,时间呢&…...

202页MES项目需求方案深入解读,学习MES系统设计规划

202页MES项目需求方案深入解读,学习MES系统设计规划 MES项目需求方案旨在实现制造执行、效率提升、精细化管理等多个方面的功能。整体结构分为七大部分,包括制造执行、效率、精细化、品质在线、设备、用户思想和数据互联。制造执行部分关注订单、品质数据…...

前端css实例

前端css实例 一、带条纹的表格 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>条纹样式的表格<…...

YOLO的框架及版本迭代

YOLO&#xff08;You Only Look Once&#xff09;是一种非常流行的实时目标检测算法&#xff0c;其特点是将目标检测任务转换为一个回归问题&#xff0c;通过一次前向传播就可以同时完成目标的分类和定位。以下是YOLO框架的整体架构和工作原理&#xff1a; 一、YOLO的基本框架…...

PotPlayer 最新版本支持使用 Whisper 自动识别语音生成字幕

PotPlayer 最新版本支持使用 Whisper 自动识别语音生成字幕 设置使用下载地址 设置 使用 下载地址 https://www.videohelp.com/software/PotPlayer...

JavaScript零基础入门速通(中)

目录 1. 函数 1.1 函数声明 1.2 返回值 1.3 匿名函数 1.4 箭头函数 2. 对象 2.1 创建对象 2.2 访问和修改对象的属性 2.3 对象方法 3. 数组 3.1 创建数组 3.2 数组方法 3.3 遍历数组 4. 作用域 4.1 全局作用域 4.2 局部作用域 4.3 块级作用域 5. 事件处理 5…...

【Yarn Bug】 yarn 安装依赖出现的网络连接问题

最近&#xff0c;在初始化 Ant Design Pro 前端脚手架过程中&#xff0c;使用 yarn 安装依赖时遇到了网络连接问题&#xff0c;具体错误信息提示为 info There appears to be trouble with your network connection. Retrying...。通过百度查询&#xff0c;得知出现这种问题的原…...

字节青训Marscode_5:寻找最大葫芦——最新题解

步骤1&#xff1a;问题定义与分析 输入条件&#xff1a; 整数n&#xff1a;牌的数量整数max&#xff1a;葫芦牌面值之和的上限数组array&#xff1a;n张牌的牌面值 输出条件&#xff1a; 两个整数组成的数组[a,b]&#xff1a; a表示三张相同牌的牌面值b表示两张相同牌的牌面值如…...

MySQL —— MySQL 程序

目录 前言 一、MySQL 程序简介 二、mysqld -- MySQL 服务器 三、mysql -- MySQL 客户端 1. mysql 客户端简介 2. mysql 客户端选项 &#xff08;1&#xff09;指定选项的方式 &#xff08;2&#xff09;mysql 客户端命令常用选项 &#xff08;3&#xff09;在命令行中使…...

LLamafactory API部署与使用异步方式 API 调用优化大模型推理效率

文章目录 背景介绍第三方大模型API 介绍LLamafactory 部署API大模型 API 调用工具类项目开源 背景介绍 第三方大模型API 目前&#xff0c;市面上有许多第三方大模型 API 服务提供商&#xff0c;通过 API 接口向用户提供多样化的服务。这些平台不仅能提供更多类别和类型的模型…...

不玩PS抠图了,改玩Python抠图

网上找了两个苏轼的印章图片&#xff1a; 把这两个印章抠出来的话&#xff0c;对于不少PS高手来说是相当容易&#xff0c;但是要去掉其中的水印&#xff0c;可能要用仿制图章慢慢描绘&#xff0c;图章的边缘也要慢慢勾画或者用通道抠图之类来处理&#xff0c;而且印章的红色也不…...

三维渲染中顺序无关的半透明混合(OIT)(一Depth Peeling)

>本文收集关于透明对象渲染技术中关于OIT技术的资料&#xff0c;尝试用简单的逻辑对这些内容进行整理。 1、透明对象的特殊对待 不要小瞧png图片和jpg图片的差异&#xff01;在一般的三维平台&#xff0c;png代表的是带透明通道的纹理&#xff0c;而jpg代表的是不带透明的…...

Linux零基础入门--Makefile和make--纯干货无废话!!

目录 Makefile的概念与使用 Makefile的编写 多个源文件的Makefile编写 Makefile的概念与使用 Makefile其实是linux中的一种包含构建指令的文件&#xff0c;用于自动化构建 一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefi…...

vim编辑器的一些配置和快捷键

记录vim编辑器的一些配置和快捷键&#xff0c;边学边用&#xff1a; yy 复制dd 删除p&#xff1a;粘贴ctrly 取消撤销u&#xff1a;撤销:w 写入:q 退出a/i 插入O: 上方插入一个空行o&#xff1a;下方插入一个空行:e 打开文件编辑 其他配置&#xff1a; 上移一行和下移一行&a…...

电子应用设计方案-31:智能AI音响系统方案设计

智能 AI 音响系统方案设计 一、引言 智能 AI 音响作为一种新兴的智能家居设备&#xff0c;通过融合语音识别、自然语言处理、音频播放等技术&#xff0c;为用户提供便捷的语音交互服务和高品质的音乐体验。本方案旨在设计一款功能强大、性能稳定、用户体验良好的智能 AI 音响系…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践&#xff0c;很多人以为AI已经强大到不需要程序员了&#xff0c;其实不是&#xff0c;AI更加需要程序员&#xff0c;普通人…...