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.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()