selenium+python实现文件上传操作的方法实例
作者:梦里有阳光 发布时间:2022-05-06 13:21:49
前言
selenium处理文件上传大致会有两种情况,一种是文件上传使用的是input标签元素,即<input type="file">
,那么对这个input标签元素使用sendkeys方法输入文件的路径就可以完成上传,另一种是调用windows系统完成文件上传,即文件上传会弹出windows弹窗,此时则需要借助Autoit这样一个小工具结合selenium完成。
方法如下
1、文件上传使用的是input标签元素,selenium+python代码示例参考如下:
import time
from selenium import webdriver
# 实例化浏览器,访问目标网页,窗口最大化
driver = webdriver.Chrome()
driver.get("https://www.layui.com/v1/demo/upload.html")
driver.maximize_window()
# 定位上传元素
element=driver.find_element_by_xpath("//input[@type='file' and @lay-type='file']")
time.sleep(2)
# 输入文件路径,上传文件
element.send_keys("D:\\timg.jpg")
time.sleep(2)
# 退出浏览器
driver.quit()
2、windows系统弹窗完成文件上传,需使用Autoit;具体操作步骤如下。
第一步,安装Autoit,下载后,默认安装即可。
第二步,Autoit脚本编写,Autioit脚本执行的内容主要从打开上传按钮后开始。
(1)使用Autoit windows info组件识别windows窗口中的元素
按住Finder Tool按钮后拖动到指定位置识别元素,显示元素的各种属性。
(2)使用SciTE Script Editor组件编写文件上传脚本
脚本解释如下:
ControlFocus("打开","","Edit1");
表示将当前的焦点聚焦到打开的弹窗上
ControlSetText("打开","","Edit1","D:\timg.jpg");
表示选中需要上传的文件
ControlClick("打开","","Button1");
表示点击弹窗中的打开按钮
(3)保存编写脚本,将编写的脚本转化为exe格式;选中编写的脚本,点击鼠标右键选择Compile Script点击确定。
第三步,selenium与Autoit脚本结合,实现文件上传。
(1)使用selenium点击文件上传按钮
(2)使用Java中的Runtime类引入Autoit脚本
例如编写完成的Autoit脚本存放在D盘根目录下,则引入方式为:Runtime.getRuntime().exec(“D:upload.exe”)
(3)完成后续操作
Autoit+selenium+python完成文件上传代码示例参考如下:
import os
import time
from selenium import webdriver
# 实例化浏览器,访问目标网页,窗口最大化
driver = webdriver.Chrome()
driver.get("https://www.layui.com/v1/demo/upload.html")
driver.maximize_window()
# 点击上传按钮
driver.find_element_by_xpath("//input[@type='file'and @lay-type='file']").click()
# 运行Autoit脚本,执行上传
os.system("D:upload.exe")
# 停留2秒
time.sleep(2)
# 退出浏览器
driver.quit()
总结
来源:https://blog.csdn.net/weixin_44169484/article/details/119714901


猜你喜欢
- 1. 前言但是对于很多人来说,首先编写一款 App 需要一定的移动端开发经验,其次还需要另外编写无障碍服务应用,如此显得有一定难度的本篇文章
- 本文实例讲述了纯JavaScript实现的分页插件。分享给大家供大家参考。具体如下://总条数(必填)var Num=Number(<
- 为什么需要优雅关闭什么叫优雅关闭?先说不优雅关闭,就是什么都不管,强制关闭进程,这会导致有些正在处理中的请求被强行中断这样做有什么问题?用户
- 本文实例讲述了Python3.4列表、数组操作。分享给大家供大家参考,具体如下:python列表,数组类型要相同,python不需要指定数据
- 🔓一. CRUDCRUD : Create,Retrieve,Update,Delete新增数据查询数据修改数据删除数据MySQL的工作就是
- 先来看段mysql查询文章回复语句:#查询文章回复-- ------------------------------ Procedure s
- 一、需求分析我们首先有一个成绩表单,但是学生的成绩是按照学号进行排序的,现在,我们希望清晰明了的知道每一个学生的名次,并且需要将学生按照成绩
- 本文实例讲述了Python Zip和Enumerate用法。分享给大家供大家参考,具体如下:Python 中的 Zipzip的作用:可以在处
- <% Response.Buffer = True Server.ScriptTimeOut=9999999&
- 学习Django框架时,创建一个引擎及索引时报错,具体报错如下:执行命令:python3 manage.py rebuild_index报如
- 当然如果想了解更多编辑器的原理制作方法,只有你自己去下载一个在线编辑器,慢慢研究,相信会有更多的收获!HTML在线编辑器的基本概念1,什么是
- fullcalendar 版本:v5.9.0解决方案fullcalendar next ,prev等切换月份的按钮是没有回调函数,要想由回调
- 首先还是应该科普下函数参数传递机制,传值和传引用是什么意思?函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进
- 最近需要训练一个生成对抗网络模型,然后开发接口,不得不在一台有显卡的远程linux服务器上进行,所以,趁着这个机会研究了下怎么使用vscod
- 目录实验环境依赖项安装编程实现浏览器有一个可以用于展示网页的窗口代码总结实验环境操作系统:Linux Mint编辑器:vim编程语言:pyt
- 前阵子刚完成一个B/S架构的学校办公系统,体会就是表太多,文件太多,而每个文件中类似的操作(代码)也太多了,例如学生信息和教师信息操作,st
- 介绍兄弟们,这个是正经的教程,不要拿来乱用,可以自己用自己的电脑或者手机试,但是别搞别人,懂的都懂!本文思路1.通过opencv调用摄像头拍
- 本文实例为大家分享了selenium+python京东自动登录及秒杀的代码,供大家参考,具体内容如下运行环境:python 2.7pytho
- 本文实例为大家分享了vue+element-ui+sortable.js实现表格拖拽的具体代码,供大家参考,具体内容如下效果如下:1.vue
- default-character-set=gbk #或gb2312,big5,utf8 然后重新启动mysql 运行->servic