51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2157|回复: 1
打印 上一主题 下一主题

[资料] python+selenium上传文件

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-4-11 14:22:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在编写自动化脚本时,遇到一个问题,就是上传文件的问题,通过网上查找资料,找到了解决的方法,虽然解决了,但是目前还不知道会不会出现什么问题,希望大家遇到问题以后可以留言讨论。

一般的input上传文件用 send_key就可以了,很简单比如:
  1. driver.find_element_by_id('file') .send_keys('d:\\baidu.py') #获取input的框,然后send_keys输入地址
复制代码

二般呢就是有一个上传按钮的了。
  有四种方法:

autoIT,借助外力,我们去调用其生成的au3或exe文件。
Python pywin32库,识别对话框句柄,进而操作
SendKeys库
keybd_event,跟3类似,不过是模拟按键,ctrl+a,ctrl+c, ctrl+v…
当然我比较懒,懒得去下载,所以就用了一种方法,就是第二种,加了一点第四种的东西,如果想了解其他方法的可以自己去网上查资料,毕竟百度是最好的老师了,O(∩_∩)O哈哈~ 。代码如下:
  1. # 定位上传按钮,添加本地文件
  2. driver.find_element_by_id("uploadBtn").click()
  3. dialog = win32gui.FindWindow('#32770', u'打开')  # 识别对话框句柄,我的对话框名字就叫“打开”
  4. ComboBoxEx32 = win32gui.FindWindowEx(dialog, 0, 'ComboBoxEx32', None)
  5. ComboBox = win32gui.FindWindowEx(ComboBoxEx32, 0, 'ComboBox', None)
  6. Edit = win32gui.FindWindowEx(ComboBox, 0, 'Edit', None)  # 找到输入框Edit对象的句柄
  7. button = win32gui.FindWindowEx(dialog, 0, 'Button', None)  # 找到按钮Button
  8. win32gui.SendMessage(Edit, win32con.WM_SETTEXT, None, 'F:\\a.jpg')  # 往输入框输入绝对地址
  9. win32api.keybd_event(13, win32con.KEYEVENTF_KEYUP, 0) #按下button
  10. # win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)  # 按button,用这种的我的存在一点问题,就是上传以后浏览器整个卡住了,所以用了上面的一种
复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-4-23 18:25 , Processed in 0.064802 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表