python实现web自动化实现文件上传
目的:python实现web自动化实现文件上传
例子:在https://www.layui.com/demo/upload.html网站中点击“上传图片”,需在windows系统弹窗进行文件上传;
一、 环境准备:
1、python的web自动化环境
selenium的安装:pip install selenium;
chromediver的下载及环境配置:下载的chromediver的驱动需与本地的谷歌浏览器版本相对应,并安装Python的路径中Scripts目录中;
2、pywinauto的安装
Pywinauto:python中的一个用于操作windows下GUI程序的库,可以用来做PC自动化,web自动化可以借助它来实现文件上传;
安装命令:pip install pywinauto
二、selenium的基本使用
使用selenium打开浏览器访问页面
from selenium import webdriver
driver = webdriver.Chrome()
url = r"https://www.layui.com/demo/upload.html"
driver.get(url)
time.sleep(2)
三、文件窗口上传的文析
1、对windows系统弹窗进行文件上传的操作【如下图所示】,具体分析:
- 文件路径的填写;
- 文件名的填写;
- 文件名填写后点击“打开”
2、实现文件上传的具体步骤:
- 借用python中的pywinauto模块中Desktop库(Desktop库的作用:对windows系统桌面进行操作),则需导入相对应的模块:from pywinauto import Desktop
- 借助控件精灵:ViewWizard,ViewWizard的作用:获取窗口的控件信息;
3、文件上传具体代码实现:
from selenium import webdriver
import time
from pywinauto import Desktop #导入Desktop库,实现对windows系统桌面进行操作
from pywinauto.keyboard import send_keys #导入send_keys库,实现模拟键盘操作
#打开浏览器与访问网页
driver = webdriver.Chrome()
url = r"https://www.layui.com/demo/upload.html"
driver.get(url)
time.sleep(2)
#获取上传图片的定位元素
driver.find_element_by_xpath(‘//button[@id="test1"]‘).click()
app = Desktop() #创建操作桌面的对象
dlg = app["打开"] #获取弹窗的窗口标题
#dlg.print_ctrl_ids() 打印窗口的所有控件信息
dlg["地址: xiaominToolbar"].click() #获取文件路径填写输入框并点击
send_keys("D:\图片") #在文件路径填写输入框输入文件存在的路径
send_keys("{VK_RETURN}") #输入文件路径后按回车键
dlg["文件名(&N):Edit"].type_keys("小小.jpg") #获取文件名输入框并填写文件名
dlg["打开(&O)"].click() #获取“打开”控件并点击
time.sleep(3)
driver.close()
额外知识:
实现多文件上传时,在多文件上传时,需单引号(‘’)括起并文件名与文件名之间需用空格隔开,再最后一个文件名后添加一个空格;
dlg["文件名(&N):Edit"].type_keys(‘"小小.jpg" "小.jpg" ‘)