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

news2024/11/29 21:17:50

上传文件的两种方式

一、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 os

file_path = 'D:\\ApowerRECData\\autoit5.png'
#执行保存的exe文件
os.system('2.exe %s '% file_path)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2250006.html

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

相关文章

【论文笔记】Number it: Temporal Grounding Videos like Flipping Manga

🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: Number it: Temporal Grou…

软件/游戏提示:mfc42u.dll没有被指定在windows上运行如何解决?多种有效解决方法汇总分享

遇到“mfc42u.dll 没有被指定在 Windows 上运行”的错误提示,通常是因为系统缺少必要的运行库文件或文件损坏。以下是多种有效的解决方法,可以帮助你解决这个问题: 原因分析 出现这个错误的原因是Windows无法找到或加载MFC42u.dll文件。这可…

网络地址转换

NAT概述 解决公有地址不足,并且分配不均匀的问题 公有地址:由专门的机构管理、分配,可以在因特网上直接通信 私有地址:组织和个人可以任意使用,只能在内网使用的IP地址 A、B、C类地址中各预留了一些私有IP地址 A&…

机器学习-神经网络(BP神经网络前向和反向传播推导)

1.1 神经元模型 神经网络(neural networks)方面的研究很早就已出现,今天“神经网络”已是一个相当大的、多学科交叉的学科领域.各相关学科对神经网络的定义多种多样,本书采用目前使用得最广泛的一种,即“神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够…

uniapp组建scroll-view初始化页面设置scrollTop无效解决办法

官方文档&#xff1a;scroll-view | uni-app官网 一 . scroll-view的基本用法 使用竖向滚动时&#xff0c;需要给 <scroll-view> 一个固定高度&#xff0c;通过 css 设置 height&#xff1b; <scroll-view :scroll-top"scrollTop" scroll-y"true&quo…

Web day02 Js Vue Ajax

目录 1.javascript: 1.js的引入方式&#xff1a; 2.js变量 & 数据类型 & 输出语句&#xff1a; 模板字符串&#xff1a; 3.函数 & 自定义对象&#xff1a; 4. json 字符串 & DOM操作&#xff1a; 5. js事件监听&#xff1a; 6.js的模块化导入或者导出&a…

【面向对象的程序设计——集合框架】主要接口

文章目录 主要接口集合框架的主要接口Collect接口Set接口实现Set接口的类SortedSet接口 List接口&#xff1a;线性表实现List接口的类&#xff1a; Queue接口实现Queue接口的类 Map接口Map接口的定义Map接口的方法SortedMap接口 主要接口 集合框架的主要接口 声明了对各种集合…

工业物联网网关在设备接入物联网中的核心作用

一、工业物联网网关的定义与功能 工业物联网网关是工业领域中的一种重要设备&#xff0c;它位于工业物联网系统的边缘位置&#xff0c;负责连接、管理和协调工业设备与云平台之间的通信。作为边缘计算的关键组件&#xff0c;工业物联网网关能够实现工业设备、传感器、PLC、DCS…

2024年第十三届”认证杯“数学中国数学建模国际赛(小美赛)

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

selinux和防火墙实验

1 、 selinux 的说明 SELinux 是 Security-Enhanced Linux 的缩写&#xff0c;意思是安全强化的 linux 。 SELinux 主要由美国国家安全局&#xff08; NSA &#xff09;开发&#xff0c;当初开发的目的是为了避免资源的误用。 系统资源都是通过程序进行访问的&#xff0c;如…

flink学习(12)——checkPoint

如何设置checkPoint package com.bigdata.day06;/** * 1、需要三句话 * 2、设置完checkPoint后若程序出现异常&#xff0c;会一直重启 * 3、此时是自动进行checkPoint保存 * 4、注意&#xff1a;此时如果有checkpoint ,是不会出现异常的&#xff0c;需要将checkpoint的代码关…

前端面试题-1(详解事件循环)

1.了解浏览器的进程模型 1.什么是进程&#xff1f; 程序运行需要有它自己专属的内存空间&#xff0c;可以把这块内存空间简单的理解为进程 每个应用至少有一个进程&#xff0c;进程之间相互独立&#xff0c;即使要通信&#xff0c;也需要双方同意。 2.什么是线程&#xff1f…

http的文件上传和下载原理

目录 一&#xff1a;上传 1&#xff1a;http请求格式 2&#xff1a;文件上传类型分析 1&#xff1a;md5秒传 2&#xff1a;分片上传 1. 什么是分片上传 2. 分片上传的场景 3&#xff1a;断点续传 1. 什么是断点续传 2. 应用场景 3. 实现断点续传的核心逻辑 4. 实现流…

【计算机视觉】图像基本操作

1. 数字图像表示 一幅尺寸为MN的图像可以用矩阵表示&#xff0c;每个矩阵元素代表一个像素&#xff0c;元素的值代表这个位置图像的亮度&#xff1b;其中&#xff0c;彩色图像使用3维矩阵MN3表示&#xff1b;对于图像显示来说&#xff0c;一般使用无符号8位整数来表示图像亮度&…

VSCode 下载 安装

VSCode【下载】【安装】【汉化】【配置C环境&#xff08;超快&#xff09;】&#xff08;Windows环境&#xff09;-CSDN博客 Download Visual Studio Code - Mac, Linux, Windowshttps://code.visualstudio.com/Downloadhttps://code.visualstudio.com/Download 注意&#xff0…

【Python入门】Python数据类型

文章一览 前言一、变量1.1.如何使用变量1.2.如何定义变量的名字&#xff08;标识符&#xff09; 二、数据类型2.1 整型数据2.2 浮点型数据2.3 布尔型&#xff08;bool&#xff09;数据2.4 复数型数据2.5 字符串类型1 > 字符串相加&#xff08;合并&#xff09;&#xff08;&…

算法基础 - 高斯牛顿法(曲线拟合)

文章目录 1. 高斯牛顿法发展历程2、问题的引出3、高斯牛顿法的前世3.1、一阶&#xff0c;二阶梯度法共有原理3.2、最速下降法&#xff08;一阶梯度法&#xff09;3.3、牛顿法&#xff08;二阶梯度法&#xff09; 4、高斯牛顿法4.1 高斯牛顿法的思想4.2 最小二乘问题4.3 高斯牛顿…

Vue+Element Plus实现自定义表单弹窗

目录 一、基本框架 1.父组件index.vue 2.子组件FormPop.vue 二、细节补充 1&#xff09;input、textarea、select、input number 2&#xff09;daterange、date、monthrange 3&#xff09;数据定义 4&#xff09;没改样式的效果 5&#xff09;最终效果 三、最终代码 …

VMware Workstation Pro下载安装及简单设置

VMware Workstation Pro下载 方法一&#xff1a;官网下载 https://support.broadcom.com/group/ecx/productdownloads?subfamilyVMwareWorkstationPro账号请自行注册&#xff0c;选择最新版本17.6.1 下载后用md5sum_x64.exe验证下载的文件完整性 方法二 百度网盘 通过网…

ospf协议(动态路由协议)

ospf基本概念 定义 OSPF 是典型的链路状态路由协议&#xff0c;是目前业内使用非常广泛的 IGP 协议之一。 目前针对 IPv4 协议使用的是 OSPF Version 2 &#xff08; RFC2328 &#xff09;&#xff1b;针对 IPv6 协议使用 OSPF Version 3 &#xff08; RFC2740 &#xff09;。…