前言

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

只支持python2环境

python3 的用 PyUserInput 看这篇 selenium+python自动化85-python3.6上SendKeys报错用PyUserInput取代

一、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上运行有个坑,第二次回车失效了,这个暂时没想到好的解决办法)

转载于:https://www.cnblogs.com/yoyoketang/p/7172915.html

Selenium2+python自动化75-非input文件上传(SendKeys)相关推荐

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

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

  2. 踩坑 - click事件与blur事件冲突问题 input文件上传同名文件问题

    前言 上周写需求遇到了一点小坑涉及到一些小细节,今天赶上没啥事总结一下分享出来. click事件与blur事件冲突问题 click事件与blur事件 blur事件: 表单事件,元素失去焦点时候触发,不 ...

  3. python实现阿里云OSS文件上传下载

    一 前言 最近使用到阿里云的产品OSS,用于临时存储线上抽取的数据,然后起本地化的流程去OSS拉回本地,进行自动化数据验证.OSS提供了web方式的管理控制台,命令行管理工具,提供了主流的SDK支持, ...

  4. web自动化之frame、文件上传、窗口切换、悬浮菜单

    #frame切换 driver.switch_to.frame(driver.find_element('name','iframe1')) driver.find_element('id', 'kw ...

  5. python实现TCP远程服务器文件上传,下载系统

    TCP服务器代码如下: from socket import *def client_upload(client_socket):"""上传数据""& ...

  6. 解决 input 文件上传不能上传重复文件的问题

    问题发生背景 使用input[type=file] 实现文件上传功能,通过onchange事件触发js代码,这个时候第一次上传是完全没问题的,不过当你第二次上传文件时,如果是不同于上一次上传文件的话是 ...

  7. js input文件上传

    (1)设置类型type='file'属性:accept='格式1,格式2' 前台筛选文件格式允许所有图片格式:"image/*"multiple 多选value 获取第一个文件名或 ...

  8. input文件上传限制(类型,大小)

    1.限制上传文件类型解决办法是可以给它添加一个accept属性,比如: <input id="File1" type="file" accept=&quo ...

  9. input文件上传代码片段

    需求:自己留个记录 <div class="button-2" @click="uploadFile"><input type="f ...

  10. JQ input 文件上传并预览 选择图片后,在页面上预览图片,页面渲染

    有时候,我们更新界面信息时会遇到,选择图片后,并不能预览图片,必须提交数据库后才能在页面上显示出来,这样我们该怎样办呢? 起始jq为我们提供了两个方法change()和URL.createObject ...

最新文章

  1. linux下查看GPU版本和详情信息 CUDA版本信息 anaconda版本信息
  2. 美国-5大牛校--8条小牛--14好校--18很不错的大学
  3. [pytorch、学习] - 3.5 图像分类数据集
  4. ghost还原固态硬盘_固态硬盘如何做系统盘
  5. 学习笔记 十一 : iscsi
  6. AppCan移动平台,开发者是这样用的……
  7. js获取浏览器的高度
  8. Scrapy爬取美女图片第四集 突破反爬虫(上)
  9. TIFF文件读取总结
  10. 文件 - 介绍 含PEM文件
  11. 华东交通大学计算机考研资料汇总
  12. HDU CCPC网络选拔赛 6441 Find Integer(数学)
  13. 通过uart串口和printf函数打印
  14. Android直播开发之旅(25):使用AES算法加密多媒体文件(+RSA+MD5+Base64)
  15. 计算机报名没有有效的安全证书,win10 因为没有使用有效的安全证书进行签名怎么解决...
  16. pk+uk+fk+index
  17. 工作生活可能用得到的资源
  18. SOCKS代理的工作原理
  19. 企业为何要建设工业互联网标识解析节点?
  20. 红日靶场vulnstack1 内网渗透学习

热门文章

  1. HLSL-高级着色语言简介【转】
  2. 【2】最简单的Laravel5.1程序分析
  3. Redhat enterprise linux下安装rlwrap工具
  4. JavaScript 中的string 方法
  5. mysql做千万条压测数据
  6. CSS3新单位vw,vh,vmin,vmax详解
  7. EasyARM-iMX283A的Linux 开发环境构建
  8. Javascript预解析、作用域、作用域链
  9. 朋友面试被问到---静态构造函数
  10. ARCGIS RUNTIME FOR IOS总结(三)