WebDriver并没有提供对应的方法,可通过以下两种思路解决:·如果上传按钮是input标签,只要定位上传按钮,可优先尝试调用send_keys()方法输入文件路径;·如果需要打开系统窗口,即Window窗口添加本地文件,则可尝试借助AutoIt实现。
1.send_keys()方式上传
设计uploadfile.html页面,代码如下:
<html>
<body>
<div>
<form name="form1" action="fileUpload.PHP" method="post" enctype="multipart/form-data">
<label type="file">File:</label>
<input type="file" name="file" id="file"/>
<br/>
<input type="hidden" name="multi" value="false"/>
<input type="submit" name="submit" value="Submit Single"/>
</form>
</div>
</body>
</html>
存放有一个名为Image.jpeg的图片,如果要在uploadfile.html页面上传该图片,则实现代码如下:
from seleniumimport webdriver
import time
driver = webdriver.Chrome()
driver.get("file:///D:/uploadfile.html")
time.sleep(5)
driver.find_element_by_xpath("//*[@id='file']").send_keys("d:\\Image.jpeg")
time.sleep(2)
driver.quit()
2.AutoIt方式上传
关于非input标签的文件上传,可借助AutoIt。AutoIt目前的版本是v3.3.14.*。AutoIt是一个使用类似BASIC脚本语言的免费软件,用于在Windows GUI(图形用户界面)中进行自动化操作。它利用模拟键盘按键、鼠标移动和窗口/控件的组合来实现自动化任务。
首先需要下载AutoIt,可进入https://www.autoitscript.com/site/autoit/downloads页面,在该页面中找到下载区域并单击下载按钮即可。
AutoIt主要应用的功能有下面3个。
·Auto It Windows Info:元素定位器,用于帮助标识Windows控件信息;
·SciTE Script Editor:编辑器,用于编写AutoIt脚本;
·Compile Script to.exe用于将AutoIt生成exe执行文件。
根据AutoIt Windows Info所识别到的控件信息打开SciTEScript Editor,当AutoIt的脚本编写好后,将其保存为D:\ AutoitScript.au3下。
打开Compile Script to.exe工具,将前面保存的AutoitScript.au3脚本文件生成为exe可执行文件D:\AutoitScript.exe
编写自动化脚本,调用D:\ AutoitScript.exe实现AutoIt.html文件上传,代码如下: