工具:winspy

Python所需安装模块:pywin32 (安装语句:pip install -i https://pypi.douban.com/simple pywin32)

元素位置:

对应代码:

from selenium import webdriver
from time import sleep
import win32gui
import win32con # 上传文件
upload = browser.find_element_by_xpath("//button[@class='el-button specialBtn el-button--default']//span")
upload.click()
sleep(1) # win32gui
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,'E:\jmeter-testcase.csv') # 往输入框输入绝对地址
win32gui.SendMessage(dialog,win32con.WM_COMMAND,1,button) # 按button sleep(5)

备注:此代码仅适用于Chrome浏览器,Firefox及IE浏览器可能title(“打开”)会不一样,后续会根据浏览器去优化代码。

参考文章:https://www.cnblogs.com/xiaogongjin/p/11546518.html

Python + Selenium 上传元素为button类型的文件的解决办法的更多相关文章

  1. [转]tftp在put上传的时候显示File not found的解决办法

    [转]tftp在put上传的时候显示File not found的解决办法 http://blog.163.com/pengcz%40126/blog/static/35908607201182433 ...

  2. python+selenium上传本地文件

    迅雷号自媒体视频文件自动上传,贴标签发布 难点 本地文件上传,通过send_keys(‘文件路径’)的方式实现上传的目的 文件名通过正则匹配的方式进行处理,主要匹配出中文标题名称 处理过程中文件名称中 ...

  3. python+selenium上传文件——input标签

    我们要区分出上传按钮的种类,大体上可以分为两种: 第一种普通上传:将本地文件路径作为一个值,放在input标签中,通过form表单将这个值提交给服务器: 第二种插件上传:是通过Flash.JavaSc ...

  4. XCode 7上传遇到ERROR ITMS-90535 Unexpected CFBundleExecutable Key. 的解决办法(转)

    原文:http://blog.csdn.net/wxs0124/article/details/48706685 找到腾讯的info.plist 删除箭头指向的一行 重新打包,上传. (注明,不一定是 ...

  5. 上传一句话木马时<? php被过滤的解决办法

    i春秋“百度杯”CTF比赛 九月场 web题 upload 题目描述:想怎么传就怎么传,就是这么任性.tips:flag在flag.php中 打开题目发现 于是想到通过上传一句话木马进入后台 上传一句 ...

  6. git上传时出现ERROR: Repository not found.的解决办法

    今天在上传时出现错误,原因是之前更改了gitee上的个人空间地址,导致找不到.需要重新配置 https://gitee.com/help/articles/4114#article-header0

  7. XCode 7上传遇到ERROR ITMS-90535 Unexpected CFBundleExecutable Key. 的解决办法

    去第三方的info.plist文件中,比如TencentOpenApi_IOS_Bundle.bundel 的info.plist ,删除 executable file 这一行

  8. git上传遇到 GitHub could not read Username 的解决办法

    Gitversion 1.8.5.2 执行git push命令异常,如下: Push failed Failed with error: unable to read askpass response ...

  9. Kindeditor富文本实现textarea文本域的上传及单独button 按钮绑定(用来实现单文件上传)

    在最近项目要新增一个内容文章,文章包含一般的正文内容,其中正文中可以包含多张图片.文章最多包含一个音频文件.文章正文的上传功能我是通过textarea文本域绑定kindeditor编辑器实现的,而单独 ...

随机推荐

  1. 【Python】【Module】os

    os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cd os.curd ...

  2. Vue API 4 (过渡和动画)

    transition name 用于自动生成 CSS 过渡类名.例如:name: fade 将自动拓展为 .fade-enter ,.fade-enter-active等.默认类名为 "v& ...

  3. centos 7 zookeeper 单体和集群搭建

    1.操作相关命令 1.0  安装命令     wget  :下载解压包 tar -xzvf  :解压 1.1  创建节点 create  / node : 创建一个名字为node的 空节点 creat ...

  4. DevOps团队交付了什么?

    一.简介 "你在团队里是做什么的?" "DevOps." "DevOps是什么呢?" "DevOps是一种文化.一种实践,目标是加 ...

  5. IOS 委托代理(delegate)实现页面传值

    LvesLi原创,转载请注明原文链接谢谢  http://www.androiddev.net/lvesli_delegate/  委托是指给一个对象提供机会对另一对象中的变化做出反应或者相应另一个对 ...

  6. N1BOOK——[第五章 CTF之RE章]wp

    推荐在了解了相应章节的内容后再来练习,你会觉得顿时悟了 记录一下自己的解题过程 2,3,4题目附件来源:https://book.nu1l.com/tasks/#/pages/reverse/5.4 ...

  7. Table.RowCount行列计数…Count(Power Query 之 M 语言)

    数据源: 任意五行两列 目标: 计算行数(包括空行) 操作过程: [转换]>[对行进行计数] M公式:  = Table.RowCount( 表 ) 扩展: 对表中列进行计数:= Table.C ...

  8. MLNX网卡驱动安装

    安装/升级MLNX驱动 1. 安装准备 驱动下载地址:https://www.mellanox.com/products/ethernet-drivers/linux/mlnx_en 选择和系统版本匹 ...

  9. MySQL查询列必须和group by字段一致吗?

    @ 目录 场景:查询各部门薪水最高的员工. 方法一: 方法二: MySQL group by是如何决定哪一条数据留下的? 分组前的数据: 那么target list和group by column不匹 ...

  10. Nginx中配置反向代理的proxy_pass的不同斜杠的区别

    location /api1/ { proxy_pass http://localhost:8080; } # http://localhost/api1/xxx -> http://local ...