Python自动化 web 自动化上传文件,原来这么简单

前言:

近期很多小伙伴在使用selenium做web自动化的过程中,遇到了文件上传的功能,发现通过selenium无从下手。那么小编在这里给大家整理了一篇文章,只需要几行简单的代码,就可以帮大家解决文件上传这个问题。

文件上传窗口分析

大家在面对文件上传这个问题的时候,无从下手的原因,主要是selenium无法对文件上传弹出窗口中的相关元素进行定位。以chrome浏览器为例,在网页上点击上传文件,会弹出如下窗口,很显然这个弹出窗口并不是浏览器中的窗口,而是windows系统中的弹窗,但selenium只能操作浏览器,无法来操作这种系统弹窗。那么这个时候我们就需要借助于可以操作系统窗口的工具来实现。

 

pywinauto的使用介绍

关于文件上传的弹窗,在python中可以通过pywinauto模块来进行操作,pywinauto是python中用来做的PC端自动化的一个库。PC端的所有窗口都可以使用它来进行操作。关于pywinauto这边不做过多介绍。之前我写过相关的文章,也录制过相关的使用视频。这里主要来讲一下如何通过它来实现文件上传。在进行文件上传的时候,我们需要这个窗口进行操作的一共是三个步骤:

操作步骤:
1、文件路径填写
2、文件名填写
3、点击打开

在进行操作之前,我们就需要定位到这几个控件,1、路径输入框,2、文件输入框、3、打开按钮 关于控件定位操作的具体细节,大家可以去自行学习pywinauto的使用 具体定位代码如下:

import pywinauto

# 使用pywinautoc创建一个操作桌面窗口的对象
app = pywinauto.Desktop() # 选中文件上传的窗口 dlg = app["打开"] # 选中文件地址输入框 dlg["Toolbar3"] # 选中文件名输入框 dlg["文件名(&N):Edit"] # 选择打开按钮 dlg["打开(&O)"] 

文件上传小案例

小编事先找好了一个文件上传的地址,这边给大家来演示一个案例

1、第一步通过selenium打开文件上传的地址,点击上传文件

from selenium import webdriver

url= "https://www.layui.com/demo/upload.html" browser = webdriver.Chrome() # 访问图片上传的网页地址 browser.get(url=url) # 点击图片上传按钮,打开文件选择窗口 browser.find_element_by_xpath("//button[@id='test2']").click() 

上述代码执行结果如下:

 

2、通过pywinauto选择上传文件,点击进行上传

import pywinauto
from pywinauto.keyboard import send_keys # 使用pywinauto来选择文件 app = pywinauto.Desktop() # 选择文件上传的窗口 dlg = app["打开"] # 选择文件地址输入框,点击激活 dlg["Toolbar3"].click() # 键盘输入上传文件的路径 send_keys("C:\课件\images") # 键盘输入回车,打开该路径 send_keys("{VK_RETURN}") # 选中文件名输入框,输入文件名 dlg["文件名(&N):Edit"].type_keys("9.png") # 点击打开 dlg["打开(&O)"].click()

猜你喜欢

转载自www.cnblogs.com/wangboyi/p/12660309.html