前言

文件上传是web页面上很常见的一个功能,自动化成功中操作起来却不是那么简单。

一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决;

另外一种非input标签实现起来比较困难,可以借助autoit工具或者SendKeys第三方库。

本篇以博客园的上传图片为案例,通过send_keys()方法解决文件上传问题

一、识别上传按钮

1.点开博客园编辑器里的图片上传按钮,弹出”上传本地图片”框。

2.用firebug查看按钮属性,这种上传图片按钮有个很明显的标识,它是一个input标签,并且type属性的值为file。

只要找到这两个标识,我们就可以直接用send_keys()方法上传文件了。

二、定位iframe

1.这里定位图片上传按钮情况有点复杂,首先它是在iframe上(不懂iframe的看这篇:Selenium2+python自动化14-iframe)

2.这个iframe的id是动态的,且没有name属性,其它属性也不是很明显

3.通过搜索发现,这个页面上有两个iframe,需要定位的这个iframe是处于第二个位置

4.可以通过标签定位所有的iframe标签,然后取对应的第几个就可以了。

三、文件上传

1.先定位到文件上传按钮,直接调用send_keys()方法就可以实现啦

# coding:utf-8
from selenium import webdriver
import time
profileDir = r'C:\Users\Gloria\AppData\Roaming\Mozilla\Firefox\Profiles\1x41j9of.default'
profile = webdriver.FirefoxProfile(profileDir)
driver = webdriver.Firefox(profile)
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)

# 文件路径
driver.find_element_by_name('file').send_keys(r"D:\test\xuexi\test\14.png")

非input标签的文件上传,就不适用于此方法了,需要借助autoit工具或者SendKeys第三方库。

学习过程中有遇到疑问的,可以加selenium(python+java) QQ群交流:646645429

《selenium+python高级教程》已出书:seleniumwebdriver基于Python源码案例

(购买此书送对应PDF版本)

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

Selenium2+python自动化33-文件上传(send_keys)相关推荐

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

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

  2. selenium+python自动化77-autoit文件上传【转载】

    前言 关于非input文件上传,点上传按钮后,这个弹出的windows的控件了,已经跳出三界之外了,不属于selenium的管辖范围(selenium不是万能的,只能操作web上元素).autoit工 ...

  3. 基于腾讯COS对象存储SDK使用Python编写的文件上传工具第二版

    更多技术文章请访问我的个人博客http://www.rain1024.com NR-TCloud 1.1,更新于2017-02-08 更新说明: 第一版上传时需要将upload.pyc复制到要上传对象 ...

  4. python 头条 上传_Python+selenium自动化之文件上传

    邮箱的主要功能就是邮件消息的收发阅读,之前的文章写了邮件的查收和编写,本篇介绍邮件的附件上传.还是以腾讯企业邮箱为例,进行实际案例操作. 文件上传的实现大体分为两种,一种是input标签,一种非inp ...

  5. python调用接口上传文件_python接口自动化7-post文件上传

    前言 文件上传在我们软件是不可少的,最多的使用是体现在我们后台,当然我们前台也会有.但是了解过怎样上传文件吗?这篇我们以禅道文档-创建文档,上传文件为例. post请求中的:Content-Type: ...

  6. python post 上传文件_python接口自动化7-post文件上传

    前言 文件上传在我们软件是不可少的,最多的使用是体现在我们后台,当然我们前台也会有.但是了解过怎样上传文件吗?这篇我们以禅道文档-创建文档,上传文件为例. post请求中的:Content-Type: ...

  7. python实现selenium文件上传的两种方式

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

  8. Python 操作Windows文件上传Linux,Linux文件下载到Windows本地

    关注点 使用python操作从linux服务器下载文件到Windows指定路径下 #!/usr/local/bin/python # encoding:utf-8import paramiko imp ...

  9. 接口自动化:文件上传及下载

    二进制方式读取文件,赋值给files变量 files = {'file': open('导入部门.xlsx', 'rb')} with requests.Session() as s:files = ...

最新文章

  1. activeMQ使用总结
  2. 2021已去,2022未来
  3. 小森林顺序_这篇微推价值过亿!仁恒公园世纪二期选房顺序“摇号”,1:7!
  4. 3.2_栈_链式存储结构(链表形式)
  5. kafka使用_Kafka精华问答 | kafka的使用场景是什么?
  6. 工程监测管理平台、工程数据看板、工程总览、动态模型、数据分析、数据跟踪、建筑工地、数据报表、警点管控、现场记录、观测记录、测点管理、模型管理、文档管理、墙体下沉、成员管理、axure原型、产品原型
  7. 东北大学 16春学期《实用写作》在线作业1-3 答案
  8. 【java】 jsp网页session和application,全局变量方法
  9. 计算机数据类型误差怎么解决,测绘数据常见误差类型及处理方法
  10. Unity 2D独立开发手记(外篇):Anima2D动画制作
  11. OpenGL的环境光、点光源、聚光灯、方向光、材质的定义。
  12. sharepoint文件夹本地同步_DIY游戏云存档 - 单机游戏存档多机异地同步方案
  13. X310系列USRP使用LAN口MATLAB控制方法
  14. 软工大牛Collin McMillan及其顶会论文解读
  15. PCIe x4 transceiver 4通道光纤数据传输卡
  16. 计算机公务员考试试题含答案,2021年公务员考试计算机专业试卷综合试题含参考答案.docx...
  17. 医学图像 .nii文件格式详解
  18. 一维向量转换为n维向量_如何在N维上固定万向节锁
  19. java数值运算divide_Java常用的计算机数字运算函数
  20. 数量关系 判断推理 智力题

热门文章

  1. vue-cli的初步使用
  2. sklearn中的验证
  3. 把windows键盘作为xfce环境中的打开Applications
  4. 3.4 矩阵 $A,A^T,A^TA,AA^T$ 秩相等,左逆和右逆
  5. CORS 请求未能成功_CORS攻击概述
  6. 使用kettle将文本文件中的数据导入数据库
  7. 福布斯全球最佳雇主榜:网易排名80 大幅超腾讯阿里
  8. Windows10系统安装 .NET Framework 3.5
  9. 使用约束控件创建界面
  10. Linux时间 时区 同步