在运用selenium进行自动化测试的过程中,可能会遇到执行上传附件的操作。selenium本身是无法直接识别并操作windows窗口的,但是可以通过第三方工具pywinauto实现上传。

pywinauto是一款界面操作的工具类库,它是python编写完成的,专门处理Windows GUI,目前仅支持Windows操作系统,其优点是可以直接用python脚本调用,前提是需要引入相应库。

pywinauto官网地址为:“https://pywinauto.readthedocs.io/” 。
pywinauto安装方法:“pip install pywinauto”。

pywinauto操作windows窗口需要先利用AutoIt获取到文件窗口,文件输入框以及上传按钮的class_name。

示例:使用selenium登录163邮箱,在发送邮件中添加附件。

# coding = utf-8from selenium import webdriver
from selenium.webdriver.common.by import By
from pywinauto.application import Application# 打开谷歌浏览器
d = webdriver.Chrome()
# 设置浏览器窗口最大化
d.maximize_window()
# 隐式等待20秒
d.implicitly_wait(20)
# 打开163邮箱登录页面
d.get('https://email.163.com/')
# 切换iframe
d.switch_to.frame(0)
# 输入邮箱账号
d.find_element(By.NAME, 'email').send_keys('邮箱账号')
# 输入密码
d.find_element(By.NAME, 'password').send_keys('邮箱密码')
# 点击登录按钮
d.find_element(By.ID, 'dologin').click()
# 退出iframe
d.switch_to.default_content()
# 点击写信
d.find_element(By.ID, '_mail_component_149_149').click()
# 点击添加附件
d.find_element(By.XPATH, '//div[@class="by0 ej1"]').click()
app = Application()
# 定位到窗口
app = app.connect(title_re='打开', class_name='#32770')
# 在输入框输入文件位置
# app['打开']['Edit1'].SetEditText(r'C:\Users\wh\Desktop\dog.jpg')
app['打开']['Edit1'].set_edit_text(r'C:\Users\wh\Desktop\dog.jpg')
# 点击打开,上传文件
app['打开']['Button1'].click()
print('上传完毕')

selenium借助pywinauto工具上传附件相关推荐

  1. 转 虫师的selenium借助AutoIt识别上传(下载)详解

    selenium借助AutoIt识别上传(下载)详解 2014-12-27 11:26 by 虫师, 755 阅读, 1 评论, 收藏,  编辑 AutoIt目前最新是v3版本,这是一个使用类似BAS ...

  2. selenium借助AutoIt识别上传(下载)详解

    AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作.它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动 ...

  3. 基于python的selenium两种文件上传方式

    方法一.input标签上传     如果是input标签,可以直接输入路径,那么可以直接调用send_keys输入路径. 方法二.非input标签上传 这种上传方式需要借助第三方工具,主要有以下三种情 ...

  4. Airtable无法上传附件/图片;点击附件上传没反应;不安全的地址怎么设置为受信任;解决方法亲测有效

    问题描述 在使用Airtable的时候突然遇到 附件上传不了的情况,就是 或者是 检查的时候刷新页面,点击附件上传反复出现下面这些信息: DevTools 无法加载来源映射:无法加载 net::ERR ...

  5. 上传附件格式限制与内容校验

    在web应用中,上传附件是很常见的操作,为了防止上传文件中有恶意攻击程序,必须验证文件是否安全,首先,也是最普通的,前后端程序都需要验证文件后缀名是否在自定义的白名单中,其次,后端通过文件流获取文件头 ...

  6. # 电脑端的应用无法上传附件,点击没有反应怎么办?

    # 电脑端的应用无法上传附件,点击没有反应怎么办? 一·一般是驱动的问题.查询是否安装驱动,若没有,安装一个驱动: 二·若安装了驱动,则·打开浏览器的菜单--工具--Internet属性--安全--自 ...

  7. 钉钉小程序上传附件(PDF等非媒体文件)至第三方文件服务器(企业内部应用)

    1.创建钉盘空间并获取spaceId (1).创建钉盘空间 进入钉钉选择"云盘",点击"团队文件"然后新建一个文件夹,给当前钉钉团队所有用户(或者能够使用该企业 ...

  8. 学一学微信公众号如何高效上传附件

    在过去的几年时间中,我一直是做公众号运营工作,见证了微信公众号由小到大的成长,也在这个过程中不断地完善自己的公众号运营技能,让自己能够更好的适应公众号的运营. 其中,有一项技能是微信公众号运营必须掌握 ...

  9. 附件上传到文件服务器,文件服务器 上传附件

    文件服务器 上传附件 内容精选 换一换 WAF支持拦截multipart/form-data格式的数据包.您可以提交工单申请配置拦截multipart/form-data格式的数据包.Multipar ...

  10. SAP 没有QM02权限的情况下如何为一个质量通知单单据上传附件?

    SAP 没有QM02权限的情况下如何为一个质量通知单单据上传附件? 正常情况,我们可以在QM01/QM02事务代码创建或者修改一个Quality Notification(质量通知单)的时候上传附件. ...

最新文章

  1. 对C语言islower、isupper、isdigit函数的测试
  2. python如何编程-终于发现怎么自学python编程
  3. mfc 多窗口之间互相切换
  4. linux系统能安装到sdc上吗,如何安装linux系统
  5. 细说Linux 系统优化
  6. 怎样在html中实现图层重叠,javascript – 在HTML5画布中实现图层
  7. SpringIOC的创建对象的单例多例模式和自动注入
  8. Java实现微信H5支付
  9. mui html5 vue,MUI和VUE数据绑定 mui框架入门 (一)
  10. 树莓派 之 USB摄像头安装和使用
  11. 《嵌入式 - 语音识别TWen-ASR-ONE开发笔记》第3章 TWen-ASR-ONE 多线程和消息队列
  12. WCF---关于无法使用以下搜索标准找到 X.509 证书的问题
  13. Machine Learning Practical 爱宝课程记录week1
  14. Docker安装和基本操作
  15. ZigBee-CC2530单片机 - 实现计算机串口通讯控制LED发光二极管
  16. jquery事件代理
  17. 个人记账软件 共享及有条件开源
  18. 微搭医美美容小程序官方模板解析
  19. 20170829 过客
  20. HDU2159.FATE-完全背包

热门文章

  1. 用python做生信_1 python生信入门
  2. 主动学习、纯半监督学习、直推学习的联系与区别
  3. error: comparison between distinct pointer types ‘char*’ and ‘unsigned char*’ lacks a cast 解决方法
  4. 域控服务器的ip地址,域控更改ip地址问题
  5. html5创建桌面快捷方式,iOS APP创建桌面快捷方式
  6. 云服务器宽带怎么选择?3M够用吗?
  7. 回归分析-常用统计量含义解析
  8. 计算机组成原理cpi是什么意思,计算机组成原理课程CPI教学方法探索
  9. matlab纹理特征提取方法,基于共生矩阵纹理特征提取
  10. 一般论文发表流程有哪些