前言

文件上传是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")

python selenium 文件上传_python+selenium 文件上传相关推荐

  1. python程序怎样在手机上_python手机文件怎么上传至电脑?

    本文讲解python的一个内置文件传输下载器,可以用来在局域网内进行文件传输,当然可能有人会问,我用微信QQ也能传,为什么还要用python来传输下载?在此,其实我个人感觉的是,这种操作更简单,省了时 ...

  2. python数据驱动读取用例_Python Selenium 之数据驱动测试

    数据驱动模式的测试好处相比普通模式的测试就显而易见了吧!使用数据驱动的模式,可以根据业务分解测试数据,只需定义变量,使用外部或者自定义的数据使其参数化,从而避免了使用之前测试脚本中固定的数据.可以将测 ...

  3. python自动化测试web页面组成_python+selenium自动化软件测试(第3章):unittest

    3.1 unittest简介 前言 (python基础比较弱的,建议大家多花点时间把基础语法学好,这里有套视频,可以照着练习下:http://pan.baidu.com/s/1i44jZdb 密码:9 ...

  4. python创建一个文件并写入_python创建文件并写入

    python怎么以追加的方式写文件? Python 3.5 想将从1到10写入一个文件并且自动换行 现在需要一个写文件方法,将selenium的脚本运行结果写入test_result.log文件中 首 ...

  5. python中对文件的操作_Python对文件操作知识

    这篇文章主要介绍了Python对文件操作知识汇总的相关资料,非常具有参考借鉴价值,需要的朋友可以参考下 打开文件 操作文件 1打开文件时,需要指定文件路径和打开方式 打开方式: r:只读 w:只写 a ...

  6. python windows和linux路径_python复制文件,路径不存在问题(Windows和linux路径分隔符不统一)...

    问题: python脚本涉及到复制文件,而我们需要兼容Windows.linux和mac环境 (Windows和linux的路径分隔符不同:通过os.path.sep查看分隔符) 如果用[路径名+os ...

  7. python 怎么判断文件存在哪里_Python判断文件和文件夹是否存在的方法

    一.python判断文件和文件夹是否存在.创建文件夹 复制代码 代码如下: >>> import os >>> os.path.exists('d:/assist' ...

  8. python的文件读取方式_python中文件读取方式

    指\u201CPython编程:从入口到实践\u201D和\u201CPython编程快速启动\u201D1.文件路径获取文件路径包括绝对路径和相对路径.绝对路径是指\u201CE: \\ \\\u2 ...

  9. python文件写入乱码_python写文件打开后是乱码

    慕运维8079593 我试了一下,果然爽翻:#!/usr/bin/env python# -*- coding: utf-8 -*-f = open(r"C:\Users\776\test. ...

最新文章

  1. scikit learning curve学习曲线绘制
  2. 很多人都在埋怨没有遇到好的团队,但好的团队不可能凭空出现,一流的团队不能仅靠团队成员努力,作为Leader,要有可行的规划,并坚定地执行、时势地调整(转)...
  3. LINUX:GRUB破解root密码【远程不可
  4. noip2018——题解总结
  5. docker镜像构建工具kaniko构建过程缓慢原因探究
  6. Django-Celery异步发送激活邮件,以及注意点
  7. 超Mask RCNN速度4倍,仅在单个GPU训练的实时实例分割算法
  8. 白话SCRUM 之四:燃尽图
  9. 软件测试整改报告,软件测试工作效率低的改进措施
  10. 维基百科英文语料库下载地址
  11. oracle普通索引改唯一索引,Oracle唯一索引功能替代
  12. 苹果和android充电线一根,苹果iPhone8充电接口大变:以后和安卓机用同一根数据线!...
  13. 虚拟机里的ubuntu设置1920x1080分辨率
  14. 什么是口碑营销?如何做到产品口口相传
  15. 如何在数字前加上0,如将1变成01
  16. 【湖上日出】从零开始通过拖拉拽可视化的方式制作动态风景,免手写CSS
  17. c语言打印输出迷宫地图所有路径
  18. 法律职业资格考试计算机怎么考,2018年法律职业资格考试客观题机考须知
  19. 微软CRM 2011 新功能之四:审核
  20. 简单左拉菜单栏-css+js

热门文章

  1. 安装oracle11g后plsql访问,64位Oracle_11g_R2安装+32位Plsql成功登录连接
  2. 计算机投诉信英语作文,【回复投诉信英语作文】_英语投诉信回复范文
  3. pythonif语句缩进_Python中多行IF语句缩进的代码样式?
  4. 5500以太网模块pcb布局_以太网PCB布局布线
  5. 达梦数据库操作记录_达梦数据库常用功能及命令记录 -- 持续更新
  6. 点击area不出现黑框_6种黑框玻璃门隔断,凭高颜值和实用性成为小户型新宠!...
  7. 增加一列为主键 oracle,给oracle数据库增加一列做主键,增加一个sequence,数据库怎么获得主键。...
  8. 清理mysql创建的游戏_Linux定时清理游戏log及mysql定时任务删除游戏日志数据的步骤...
  9. ffmpeg视频学习网站
  10. vue component created没有触发_详解在Vue中使用TypeScript的一些思考(实践)