python+selenium上传文件

在编写自动化脚本时,遇到一个问题,就是上传文件的问题,通过网上查找资料,找到了解决的方法,虽然解决了,但是目前还不知道会不会出现什么问题,希望大家遇到问题以后可以留言讨论。

  •  一般的input上传文件用 send_key就可以了,很简单比如:

  driver.find_element_by_id('file') .send_keys('d:\\baidu.py') #获取input的框,然后send_keys输入地址

  • 二般呢就是有一个上传按钮的了。

  有四种方法:

  1. autoIT,借助外力,我们去调用其生成的au3或exe文件。
  2. Python pywin32库,识别对话框句柄,进而操作
  3. SendKeys库
  4. keybd_event,跟3类似,不过是模拟按键,ctrl+a,ctrl+c, ctrl+v…

当然我比较懒,懒得去下载,所以就用了一种方法,就是第二种,加了一点第四种的东西,如果想了解其他方法的可以自己去网上查资料,毕竟百度是最好的老师了,O(∩_∩)O哈哈~ 。代码如下:

# 定位上传按钮,添加本地文件
driver.find_element_by_id("uploadBtn").click()
dialog = win32gui.FindWindow('#32770', u'打开')  # 识别对话框句柄,我的对话框名字就叫“打开”
ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None)
ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None)
Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None)  # 找到输入框Edit对象的句柄
button = win32gui.FindWindowEx(dialog, 0, 'Button', None)  # 找到按钮Button
win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, 'F:\\a.jpg')  # 往输入框输入绝对地址
win32api.keybd_event(13, win32con.KEYEVENTF_KEYUP, 0) #按下button 
# win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)  # 按button,用这种的我的存在一点问题,就是上传以后浏览器整个卡住了,所以用了上面的一种

对了,用这个方法的话要下载 pywin32 库,下载地址是:https://sourceforge.net/projects/pywin32/files/pywin32/

剩下的三种方法我懒的写,如果这个方法没有解决问题或者需要的话给我留言,我续写一下

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值