以百度中的上传图片为例
具体步骤如下所示:
第一步:打开百度,并放大窗口;
第二步:点击按图片搜索
第三步:点击选择文件,弹出打开弹出
第四步:选择自己需要上传的文件
具体实现代码如下所示
from selenium import webdriver
import win32gui
import win32con
import time,sys
driver=webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.maximize_window()#最大
driver.find_element_by_xpath('//*[@id="form"]/span[1]/span[1]').click()
time.sleep(2)
# driver.find_element_by_xpath("xpath==//*[contains(text(),'选择文件')]").click()
#选择文件按钮使用常见的元素定位一直报错,使用execute_script模拟定位
element=driver.find_element_by_class_name("upload-pic")
time.sleep(1)
driver.execute_script("arguments[0].click();", element)
#弹出上传弹窗时间比较久,需要等待一段时间,在测试时代码一直运行成功,但是就是看不到上传文件的弹窗,卡了将近一天
time.sleep(10)
#一级顶层窗口,此处title为上传窗口名称,浏览器不一样上传窗口名称不一样
dialog = win32gui.FindWindow("#32770",'打开')
#二级窗口
ComboBoxEx32 = win32gui.FindWindowEx(dialog,0,"ComboBoxEx32",None)
#三级窗口
comboBox = win32gui.FindWindowEx(ComboBoxEx32,0,"ComboBox",None)
#四级窗口
edit = win32gui.FindWindowEx(comboBox,0,'Edit',None)
button = win32gui.FindWindowEx(dialog,0,'Button',None)
#执行操作 输入文件路径,文件路径根据自己的实际情况设置
win32gui.SendMessage(edit,win32con.WM_SETTEXT,None,r"D:\学习笔记\img\airtest.png")
#点击打开上传文件
win32gui.SendMessage(dialog,win32con.WM_COMMAND,1,button)
print('上传成功')
time.sleep(4)
driver.quit()