前言

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

  一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决;另外一种非input标签实现起来比较困难,可以借助autoit工具或者SendKeys第三方库。

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

一、识别上传按钮

1.点开百度的图片上传按钮,显示”本地上传图片”。

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

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

二、定位元素

  1.用firebug查看按钮属性,发现有class属性;

  2.确定class唯一,所以直接用class语法定位;

from selenium import webdriver
driver = webdriver.Firefox() # 启动浏览器
driver.get("https://www.baidu.com/") # 请求地址
driver.find_element_by_class_name("soutu-btn").click() # 点击照相机按钮
''' 先定位上传图片按钮,直接send_keys输入地址 '''
driver.find_element_by_class_name("upload-pic").send_keys("D:\xx.jpg")

注释:

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

Selenium2+python自动化-文件上传的更多相关文章

  1. Python Selenium 文件上传之Autoit

    今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python Selenium 文件上传之SendKeys 这种方法直接通过命令行执行脚本时没有问题,可以成功 ...

  2. Python Selenium 文件上传之SendKeys

    昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直 ...

  3. Python WebDriver 文件上传(二)

    今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python WebDriver 文件上传(一) 这种方法直接通过命令行执行脚本时没有问题,可以成功上传,但是 ...

  4. Python WebDriver 文件上传(一)

    昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直 ...

  5. Python接口自动化——文件上传/下载接口

    〇.前言 文件上传/下载接口与普通接口类似,但是有细微的区别. 如果需要发送文件到服务器,例如:上传文档.图片.视频等,就需要发送二进制数据,上传文件一般使用的都是 Content-Type: mul ...

  6. python-web自动化-文件上传操作(非input标签的上传,需要借助第三方工具)

    文件上传操作 一.文件上传分两种情况:1. 如果是input可以直接输入路径的,可以直接调send_keys输入路径 2. 非input标签的上传,需要借助第三方工具:    2.1 Autolt 需 ...

  7. Python 之文件上传

    基于form表单提交 # 需要指定form-data,不能直接拼键值对 可以指定name照片存在位置 views.py from django.shortcuts import render,redi ...

  8. selenium+Python(文件上传)

    文件上传操作也比较常见功能之一,上传功能没有用到新有方法或函数,上传过程一般要打开一个本地窗口,从窗口选择本地文件添加.所以,一般会卡在如何操作本地窗口添加上传文件只要定位上传按钮,通send_key ...

  9. Python Django文件上传

    文件保存本地 view视图 def update(request): if request.method =='GET': return render(request,'update.html') e ...

随机推荐

  1. python多线程练习

    import threading from time import sleep,ctime def print1(): for i in range(10): print(i,end='') prin ...

  2. VS2012与VS2015同时安装用VS2012创建MFC程序时弹出编译错误”fatal error C1083: 无法打开包括文件:“mprapidef.h”: No such file or directory”的解决办法

    在WIndows 7操作系统上同时安装VS2012与VS2015并用VS2012创建MFC程序时弹出编译错误”fatal error C1083: 无法打开包括文件:“mprapidef.h”: No ...

  3. JDK(六)JDK1.8源码分析【集合】LinkedHashMap

    本文转载自joemsu,原文连接 [JDK1.8]JDK1.8集合源码阅读——LinkedHashMap LinkedHashMap的数据结构 可以从上图中看到,LinkedHashMap数据结构相比 ...

  4. [iOS]UIDynamicAnimator动画

    创建动画 UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view]; 协议代理 ...

  5. Autolayout中Hugging和Compression使用注意

    前言 本文主要侧重Autolayout使用过程中,通过代码和SB添加含有intrinsicSize属性控件约束的一些细节. 来自我的博客,欢迎访问:To Be Independent. Hugging ...

  6. C++_类和对象

    类和对象 OOP第二课 1 类的构成 1.1 从结构到类 1.2 类的构成 2 成员函数的声明 2.1 普通成员函数形式 2.2 将成员函数以内联函数的形式进行说明 3 对象的定义和使用 3.1 对象 ...

  7. 【学时总结】 ◆学时 · I◆ A*算法

    [学时·I]A*算法 ■基本策略■ --A*(A Star)无非就是BFS的升级,当BFS都超时的时候-- 同样以队列为基础结构,BFS使用FIFO队列(queue),而A*则使用优先队列(prior ...

  8. Linux相关网络命令

    1.简述osi七层模型和TCP/IP四层模型 OSI七层模型 TCP/IP四层模型 2.简述iproute家族命令 ip命令: ip [OPTIONS] OBJECT {COMMAND|help} i ...

  9. 构建WebGL目标时的内存考量

    Memory Considerations when targeting WebGL 构建WebGL目标时的内存考量 Memory in Unity WebGL can be a constraini ...

  10. JavaWeb开发使用jsp还是html做前端页面

    一.概述 刚开始学习Javaweb开发的小伙伴都有一个疑惑:用jsp开发前端还是用HTML开发前端呢? 这个疑惑的来源主要是:刚接触完前端但又不深入学习js,接着学习jsp,发现老师们都一直用着jsp ...