Selenium 如在在 windows 窗口,上传文件 (代码仅针对 chrome 浏览器)

有2种情况:

file_path = "C:\Usersj\Documents\1111.txt"

1.如果标签名是input,可以直接输入路径,直接调用send_keys

driver.find_element(By.ID,'aa').send_keys(file_path)

2.非input标签的上传,则需要第三方工具

2.1 AutoIt

具体可以参考虫师的博客

; Wait 10 seconds for the Upload window to appear

WinWait("[CLASS:#32770]","",5)

; Set the File name text on the Edit field

controlSetText("打开","","Edit1","C:\Users\hongzj\Pictures\七夕\1.gif")

Sleep(2000)

; Click on the Open button

ControlClick("打开","","Button1");

2.2SendKeys第三方库(目前只支持到2.7版本)

2.3 Python pywin32库,识别对话框句柄,进而操作

import win32gui

import win32con

def upload_chrome(filepath):

# x一级窗口

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", "打开(&0)")

# 操作一#发送文件路经

win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, filepath)

# 点击打开按钮

win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)

指定要上传的文件路径

upload_chrome(file_path)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.首先先定位该弹出框: 用spy++查找到该弹出框的标题和类名: 弹出框的句柄是每次都会变的,所以通过标题和类名...
    蘑菇小巷阅读 11,624评论 1 6
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,554评论 0 17
  • 无意间刷微博,看到一个读书语录的公众号,发的一条微博。是你单身了多久,看有几百条评论,好奇心顿起,就是想去评论一下...
    微暮清尘阅读 1,596评论 14 12
  • 一转眼,漫长的寒假已成为历史;一眨眼,又走过了一个秋冬。大学时间已经过去了半年,而我似乎依然迷茫。 怀念当初穿校服...
    西吖阅读 157评论 1 1
  • 人可以不年轻 但不可以不优雅 我打算去学舞蹈了 是我梦寐以求的拉丁舞 看了一晚,学了两个小时 尤其看到那个美丽的女...
    JENY_f22c阅读 129评论 0 2