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
猜你喜欢
- 熬了半个通宵,写出了自己的Google SiteMap文件,在这里给出详细编写教程,愿对大家有所帮助。Google SiteMap的作用及协
- 我们使用 python setup.py install 来安装python包,但是如何卸载呢?只能手动删除安装的文件可以使用如下命令pyt
- 1 包简介1.1 工作空间go语言的工作空间必须由 bin、pkg、src三个目录组成,可以在GOPATH环境变量中添加多个工作空间,但不能
- 如下所示:#! usr/bin/python#coding=utf-8 import numpy as npimport matplotli
- 看了OReilly.JavaScript.The.Definitive.Guide.5th.Edition.Aug.2006里的cookie
- 如下所示:def trans_data_to_pair(self,data,index): contents=[
- 学习WEB标准的朋友一般都是从学习CSS开始,为什么呢?因为CSS是一种很有意思的语言,它能让我们的网页千变万化。也许我们一开始的接触只是因
- 工资excel表格格式如下所示:使用python批量给每位员工发送工资条信息,格式如下:思路:首先是加载excel,获取当前sheet表格s
- 前言动态生成表格是前端开发中非常重要的内容,常常是后端返回数据(大多是json类型),我们前端通过js循环来动态添加,所以这部分内容是十分重
- 现在大多数Centos6.x版本的系统python都是2.x,现因开发需求需要安装前端代码的构建工具glue,故必须要做python版本的升
- 下面的路径介绍针对windows在编写的py文件中打开文件的时候经常见到下面其中路径的表达方式:open('aaa.txt'
- 关于python的ssh库操作需要引入一个远程控制的模块——paramiko,可用于对远程服务器进行
- DataLoaderDataset不能满足需求需自定义继承torch.utils.data.Dataset时需要override __ini
- 一、python中对文件、文件夹操作时经常用到的os模块和shutil模块常用方法。1.得到当前工作目录,即当前Python脚本工作的目录路
- TKinterPython 的 GUI 库非常多,之所以选择 Tkinter,一是最为简单,二是自带库,不需下载安装,随时使用,跨平台兼容性
- 权重初始化对于训练神经网络至关重要,好的初始化权重可以有效的避免梯度消失等问题的发生。在pytorch的使用过程中有几种权重初始化的方法供大
- 本文实例为大家分享了python使用正则筛选信用卡的具体代码,供大家参考,具体内容如下本文来源于两个简单的题目:1.判断一对单词是否是&qu
- 函数重载的替代方法-伪重载,下面看一个具体的实例代码。<? php//函数重载的替代方法-伪重载////确实,在PHP中没有函数重载这
- ES Module导出仅导出named exports: 命名导出,每次可以导出一个或者多个。default exports: 默认导出,每
- 本文为大家分享了多种方法求质数python实现代码,供大家参考,具体内容如下题目要求是求所有小于n的质数的个数。 求质数方法1: 穷举法: