转至博客:上海-悠悠

前言

不少小伙伴问非input标签如何上传文档,这个本身就是一坑,无奈很多小伙伴非要跳坑里去,那就介绍一个非主流的上传文件方法吧,用第三方库SendKeys.

(本篇基于python2.7版本的,python3的安装SendKeys包自己想办法吧)

一、SendKeys安装

1.pip安装SendKeys

>pip install SendKeys

2.在安装的时候如果你出现上面保存,先别急着截图贴群求大神,上面已经告诉解决办法了:Get it from http://aka.ms/vcpython27

3.按上面给的地址下载文件,一路傻瓜式安装就行

4.出现如下界面,说明安装成功了

二、参考代码

1.以下代码在Chrom浏览器上是运行通过的,要先登录博客园记住密码,然后加载配置免登录

2.chrome加载配置方法,只需改下面一个地方,username改成你电脑的名字(别用中文!!!)

'--user-data-dir=C:\Users\username\AppData\Local\Google\Chrome\User Data'

3.后面两次回车,是因为搜狗输入法,第一个回车是确认输入,第二个是确定选中的文件

# coding:utf-8
from selenium import webdriver
import SendKeys
import time

# 加载Firefox配置
# profileDir = r'C:\Users\xxxAppData\Roaming\Mozilla\Firefox\Profiles\1x41j9of.default'
# profile = webdriver.FirefoxProfile(profileDir)
# driver = webdriver.Firefox(profile)

# 加载Chrome配置
option = webdriver.ChromeOptions()
option.add_argument('--user-data-dir=C:\Users\xxxAppData\Local\Google\Chrome\User Data')
driver = webdriver.Chrome(chrome_options=option)

driver.implicitly_wait(30)
driver.get("http://www.cnblogs.com/yoyoketang/")
driver.find_element_by_link_text("新随笔").click()
time.sleep(3)
# 点开编辑器图片
driver.find_element_by_css_selector("img.mceIcon").click()
time.sleep(3)
# 定位所有iframe,取第二个
iframe = driver.find_elements_by_tag_name('iframe')[1]
# 切换到iframe上
driver.switch_to_frame(iframe)

# 文件路径
time.sleep(2)
driver.find_element_by_class_name("qq-upload-button").click()
# driver.find_element_by_name("file").click()
time.sleep(5)

# SendKeys方法输入内容
SendKeys.SendKeys("D:\\test\\jie1\\blog\\12.png")  # 发送文件地址
time.sleep(1)
SendKeys.SendKeys("{ENTER}")   # 发送回车键
time.sleep(1)
SendKeys.SendKeys("{ENTER}")    # 因为我的电脑是搜索输入法,所以多看一次回车
# driver.quit()

(备注:这里Firefox上运行有个坑,第二次回车失效了,这个暂时没想到好的解决办法)

最新文章

  1. [java]输入一个算术表达式输出结果
  2. inheritableStatics 与statics类
  3. Unable to establish connection to tokens
  4. windows+caffe(四)——创建模型并编写配置文件+训练和测试
  5. Ubuntu镜像使用帮助
  6. Java多线程-线程的调度(合并)
  7. HTTP/2 对 Web 性能的影响(下)
  8. 【三支火把】---C指针总结
  9. .NET的微型Web框架 Nancy
  10. c++ 中bool 的默认值
  11. C++ 头文件系列 (algorithm)
  12. PE解析器的编写(一)——总体说明
  13. 08 Zabbix4.0系统配置事件通知 - 动作Action
  14. [模板][P4238]多项式求逆
  15. fastjson的@JSONField注解
  16. Unity Profiler Memory
  17. Jenkins 持续集成综合实战
  18. 转 CentOS下php安装mcrypt扩展
  19. HDUOJ-----1074 Integer Inquiry
  20. warning C4305:“初始化”:从“double”到“float”截断

热门文章

  1. ExtJS6.0扩展日期选择控件为也可以选择时间
  2. Jboss6内存修改
  3. 获取JavaScript对象的方法
  4. stap中的entry函数
  5. qemu的device参数解释 包括socket的一些知识
  6. ArcGis融合小多边形到相邻多边形
  7. 51nod 1680区间求和 (dp+树状数组/线段树)
  8. 2017南开ACM校赛(网络赛) 民间题解
  9. BJOI2018
  10. 【17.12.22.B】