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上运行有个坑,第二次回车失效了,这个暂时没想到好的解决办法)
最新文章
- js数组去重
- Hadoop技巧系列索引
- thinkphp发邮件失败原因
- 创建【哆啦A梦】风格字体
- 寒假学习计划(c++作业2)
- MongoDB: 数据库复制
- [C++]虚函数-同名访问
- Domj4读取xml文件
- Eclipse - JAR包制作细节
- 在XAMPP上建立多个域名的站点
- 算法笔记_066:Kruskal算法详解(Java)
- python编程理念
- VSCode 常用快捷键
- wordcloud制作logo
- 安全测试robots
- 富文本编辑器Ueditor 及 hibernate 逆向工程
- vscode下ts-node传入cli参数
- 分享url带中文参数,打开html操作完毕跳转jsp页面中文乱码解决
- Java实现高效的枚举元素集合
- read progress