Selenium2+python自动化75-非input文件上传(SendKeys)转载

Posted 小曹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium2+python自动化75-非input文件上传(SendKeys)转载相关的知识,希望对你有一定的参考价值。

转至博客:上海-悠悠

前言

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

以上是关于Selenium2+python自动化75-非input文件上传(SendKeys)转载的主要内容,如果未能解决你的问题,请参考以下文章

python + selenium 模拟键盘升级版PyUserInput

selenium+python自动化98--文件下载弹窗处理(PyKeyboard)

Selenium2+python自动化20-引入unittest框架

selenium2 python自动化测试之利用AutoIt工具实现本地文件上传

python+selenium2自动化---元素定位

Selenium2+python自动化2-pip降级selenium3.0