自动化测试之pywin32 方式上传文件
程序员文章站
2022-07-12 14:49:24
...
1.工具介绍
方法3:非input 标签,使用第三方工具pywin32 和 spy++
2.工具安装
下载地址:https://sourceforge.net/projects/winspyex/
在已安装的python3.4或者python3.4 可去百度下载
链接:https://pan.baidu.com/s/1LDCGCZ7aug0Iqa7c4GZDAg
提取码:ntco
复制这段内容后打开百度网盘手机App,操作更方便哦
链接:https://pan.baidu.com/s/1GUVz0sL7ogency5uVMMqhw
提取码:ispn
若是其他版本的,需去D:\Program Files\Python38\Scripts 下进行pip命令在线安装
pip install pypiwin32
更新pip:python -m pip install --upgrade pip
pip install pytest -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install pytest-html
pip install pytest-allure-adaptor
pip install pytest-rerunfailures
pip install pytest-xdist
1、WinSpy-1.0.2.7z解压即可。
2、pywin32的exe程序,根据自己安装的python版本来选择。
双击安装即可。
3、如果第2步执行不成功,或者没有匹配的版本,从以下命令中选一个安装:
命令1:pip install pypiwin32
命令2:python -m pip install pypiwin32
3.工具使用
根据自己的版本选择打开exe运行程序
此处使用chrome 上传文件为示例,火狐,IE,操作步骤类似,代码窗口名称不一致,需要对应修改
根据以上操作,得到层级关系如下:
输入框文件名:
Edit-》ComboBox-》ComboBoxEx32-》32770
打开按钮:
Button-》#32770
4.代码示例
from selenium import webdriver
import time
import win32gui
import win32con
driver =webdriver.Chrome()
driver.maximize_window() #最大化打开chrome
driver.get("http://xxxx/#!/login")
username="michelle"
password="michelle123"
driver.find_element_by_xpath('//input[@placeholder="帐号"]').send_keys(username)
driver.find_element_by_xpath('//input[@placeholder="密码"]').send_keys(password)
driver.find_element_by_xpath('//b[text()="登录"]').click()
time.sleep(2)
print("hok1")
# 点击上传文件按钮
driver.find_elements_by_xpath('//input[@type="file"]')[1].click() #此处抓取不到,超时报错
print("hok2")
time.sleep(2)
# 点击文件上传,弹窗出现窗口
# 出现弹窗窗口,使用upload 方法
filepath="E:\\testimg\\QQ1.jpg"
upload_file(filepath)
time.sleep(2)
def upload_file(filepath):
# 一级窗口
dialog=win32gui.FindWindow("#32770","打开")
#找到窗口二级元素
ComboBoxEx32=win32gui.FindWindowEx(dialog,0,"ComboBoxEx32",None)
#三级元素
combox=win32gui.FindWindowEx(ComboBoxEx32,0,"ComboBox",None)
# EDIT元素
edit=win32gui.FindWindowEx(combox,0,"Edit",None)
#打开按钮元素
button=win32gui.FindWindowEx(dialog,0,"Button",None)
#edit 中输入文件全名称(完整路径)
#"E:\testimg\QQ1.jpg" 设置为参数
win32gui.SendMessage(edit,win32con.WM_SETTEXT,None,filepath)
#点击打开按钮提交
win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)
driver.quit() # 自动关闭chrome
5.执行代码
编写好代码后,cmd进入文件地址,执行命令:python test_file.py (文件名称)