前言
selenium处理文件上传大致会有两种情况,一种是文件上传使用的是input标签元素,即<input type="file">
,那么对这个input标签元素使用sendkeys方法输入文件的路径就可以完成上传,另一种是调用windows系统完成文件上传,即文件上传会弹出windows弹窗,此时则需要借助autoit这样一个小工具结合selenium完成。
方法如下
1、文件上传使用的是input标签元素,selenium+python代码示例参考如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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完成文件上传代码示例参考如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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()
|
总结
到此这篇关于selenium+python实现文件上传操作的文章就介绍到这了,更多相关selenium+python文件上传内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/weixin_44169484/article/details/119714901