首页 > Windows开发 > 详细

selenium使用pypiwin32库上传文件

时间:2019-12-11 10:28:33      阅读:168      评论:0      收藏:0      [点我收藏+]

在学习selenium自动化测试中,遇到文件上传,书的作者轻轻跳过,回避了实际工作要求。

本着从实际出发的想法,在网上查了些资料,最终使用win32库完成文件上传。

安装pypiwin32库: pip install pypiwin32

参考https://www.cnblogs.com/linuxchao/p/linuxchao-selenium-upload_file.html

===============================================================

回归正题,下面的内容是实操代码,希望注释能把事情描述的更清楚些。 

import win32con
import win32gui
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver

def uploadFile(browser:str,file:str):
# 浏览器打开的窗口 标题名称有区别
browser_type = {
‘firefox‘:‘文件上传‘,
‘chrome‘:‘打开‘,
‘ie‘:‘选择要加载的文件‘
}

sleep(2)

# 使用工具WinSpy,定位“打开”窗口,class是 #32770
    dialog = win32gui.FindWindow(‘#32770‘,browser_type[browser])

技术分享图片





# 需要一级一级找子窗口edit;;;在工具WinSpy右侧可以看到“打开”窗口的结构:#32770 “打开”---ComboBoxEx32---ComboBox---Edit
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,file)
win32gui.SendMessage(dialog,win32con.WM_COMMAND,1,button)

技术分享图片



技术分享图片





if __name__ == ‘__main__‘:
driver = webdriver.Chrome()
driver.get(r‘C:\Users\Administrator\PycharmProjects\webAutoTest\upload_file.html‘)
element = driver.find_element_by_xpath(‘//*[@id="upload_file"]‘)
action = ActionChains(driver)
action.move_to_element(element).click().perform()
action.release()
sleep(3)
uploadFile(‘chrome‘,r‘C:\driver\chromedriver 64b.exe‘)
sleep(3)
driver.quit()

selenium使用pypiwin32库上传文件

原文:https://www.cnblogs.com/yymugui/p/12020033.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!