Selenium2+python自动化75-非input文件上传(SendKeys)
前言
不少小伙伴问非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)相关推荐
- 基于python的selenium两种文件上传方式
方法一.input标签上传 如果是input标签,可以直接输入路径,那么可以直接调用send_keys输入路径. 方法二.非input标签上传 这种上传方式需要借助第三方工具,主要有以下三种情 ...
- 踩坑 - click事件与blur事件冲突问题 input文件上传同名文件问题
前言 上周写需求遇到了一点小坑涉及到一些小细节,今天赶上没啥事总结一下分享出来. click事件与blur事件冲突问题 click事件与blur事件 blur事件: 表单事件,元素失去焦点时候触发,不 ...
- python实现阿里云OSS文件上传下载
一 前言 最近使用到阿里云的产品OSS,用于临时存储线上抽取的数据,然后起本地化的流程去OSS拉回本地,进行自动化数据验证.OSS提供了web方式的管理控制台,命令行管理工具,提供了主流的SDK支持, ...
- web自动化之frame、文件上传、窗口切换、悬浮菜单
#frame切换 driver.switch_to.frame(driver.find_element('name','iframe1')) driver.find_element('id', 'kw ...
- python实现TCP远程服务器文件上传,下载系统
TCP服务器代码如下: from socket import *def client_upload(client_socket):"""上传数据""& ...
- 解决 input 文件上传不能上传重复文件的问题
问题发生背景 使用input[type=file] 实现文件上传功能,通过onchange事件触发js代码,这个时候第一次上传是完全没问题的,不过当你第二次上传文件时,如果是不同于上一次上传文件的话是 ...
- js input文件上传
(1)设置类型type='file'属性:accept='格式1,格式2' 前台筛选文件格式允许所有图片格式:"image/*"multiple 多选value 获取第一个文件名或 ...
- input文件上传限制(类型,大小)
1.限制上传文件类型解决办法是可以给它添加一个accept属性,比如: <input id="File1" type="file" accept=&quo ...
- input文件上传代码片段
需求:自己留个记录 <div class="button-2" @click="uploadFile"><input type="f ...
- JQ input 文件上传并预览 选择图片后,在页面上预览图片,页面渲染
有时候,我们更新界面信息时会遇到,选择图片后,并不能预览图片,必须提交数据库后才能在页面上显示出来,这样我们该怎样办呢? 起始jq为我们提供了两个方法change()和URL.createObject ...
最新文章
- linux下查看GPU版本和详情信息 CUDA版本信息 anaconda版本信息
- 美国-5大牛校--8条小牛--14好校--18很不错的大学
- [pytorch、学习] - 3.5 图像分类数据集
- ghost还原固态硬盘_固态硬盘如何做系统盘
- 学习笔记 十一 : iscsi
- AppCan移动平台,开发者是这样用的……
- js获取浏览器的高度
- Scrapy爬取美女图片第四集 突破反爬虫(上)
- TIFF文件读取总结
- 文件 - 介绍 含PEM文件
- 华东交通大学计算机考研资料汇总
- HDU CCPC网络选拔赛 6441 Find Integer(数学)
- 通过uart串口和printf函数打印
- Android直播开发之旅(25):使用AES算法加密多媒体文件(+RSA+MD5+Base64)
- 计算机报名没有有效的安全证书,win10 因为没有使用有效的安全证书进行签名怎么解决...
- pk+uk+fk+index
- 工作生活可能用得到的资源
- SOCKS代理的工作原理
- 企业为何要建设工业互联网标识解析节点?
- 红日靶场vulnstack1 内网渗透学习