Python+selenium win32gui 上传附件

来源:互联网 发布:淘宝怎么能提高销量 编辑:程序博客网 时间:2024/06/14 07:00


Python是没有自带访问windows系统API的库的,需要下载。库的名称叫pywin32,可以从网上直接下载。
以下链接地址可以下载:http://sourceforge.net/projects/pywin32/files%2Fpywin32/   (下载适合你的Python版本)

运行以下代码import win32api 如果出现ImportError: No module named win32api 或者出现 ImportError: No module named win32con,说明你的库没有安装好。
介绍这个库里面最重要的两个模块:win32api和win32con。

win32api顾名思义,就是用python对win32的本地api进行了封装;

win32con个人理解为win32constant,即win32的常量定义。


安装pywin32时报错:
Python version 3.6-32 required, which was not found in the registry.
修改注册表信息:Local_Machine-> Software->Python->Python Core->3.6 改成 3.6-32
安装完pywin32后引用win32gui: from win32 import win32gui
Win32con不存在是因为它其实是win32里的constants,所以要用 from win32 import constants



假设你已熟悉win32,python编程,所以直接上代码:

#Upload file

# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from win32 import win32gui
from win32 import constants

import time


dr = webdriver.Firefox()
dr.get('http://localhost/webapp')
time.sleep(2)
dr.find_element_by_id('UserName').clear()
dr.find_element_by_id('UserName').send_keys("sss")
time.sleep(1)
dr.find_element_by_id('btnLogin').click()
time.sleep(3)
dr.find_element_by_id("myFile-browseButtonWrap").click()
time.sleep(1)
dialog = win32gui.FindWindow('#32770', u'文件上传') #找到windows对话框参数是(className,title)
ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None)
ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None)
Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None)
#上面3句依次找对象,直到找出输入框Edit对象的句柄
button = win32gui.FindWindowEx(dialog, 0, 'Button', None) #确定按钮
# 跟上面示例的代码是一样的,只是这里传入的参数不同,如果愿意可以写一个上传函数把上传功能封装起来
win32gui.SendMessage(Edit, constants.WM_SETTEXT, 0, 'E:\Downloads\DATA.xlsx')
win32gui.SendMessage(dialog, constants.WM_COMMAND, 1, button)
print(dr.find_element_by_id("myFile-inputEl").text)
dr.quit()
原创粉丝点击