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

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

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

一、识别上传按钮

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

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

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

 from selenium import webdriver
import time
profile_directory = r'C:\Users\ct-wyl\AppData\Roaming\Mozilla\Firefox\Profiles\lt6n8ynh.default'
profile = webdriver.FirefoxProfile(profile_directory)
driver = webdriver.Firefox(profile)
driver.get('https://www.cnblogs.com/FlyToDream')
time .sleep(2)
driver.find_element_by_id('blog_nav_newpost').click()
driver.implicitly_wait(2)
driver.find_element_by_css_selector('img.mceIcon').click()
time.sleep(3)
# 页面有多个iframe,找到所有的iframe,根据索引取要找的iframe
ifrme = driver.find_elements_by_css_selector('iframe')[1]
driver.switch_to.frame(ifrme)
driver.find_element_by_name('file').send_keys(r'C:\Users\ct-wyl\Pictures\6.jpg')

selenium 文件上传的更多相关文章

  1. Python Selenium 文件上传之Autoit

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

  2. Python Selenium 文件上传之SendKeys

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

  3. selenium文件上传的实现

    一.对于上传文件, 从手动操作我们可以看出, 需要对window 窗体进行操作, 而对于selenium webdriver 在这方面应用就受到了限制. 但是, 庆幸的是, 对于含有input ele ...

  4. 自动化测试基础篇--Selenium文件上传send_keys

    摘自https://www.cnblogs.com/sanzangTst/p/8358165.html 文件上传是web页面上很常见的一个功能,自动化成功中操作起来却不是那么简单. 一般分两个场景:一 ...

  5. selenium -文件上传的实现 -对于含有input element的上传

    使用selenium做自动化时,我们经常会遇到的一个让人头疼的问题就是文件上传. 问题的难点在于selenium无法识别并操作Windows窗口,若我们可以绕过弹出框直接把文件信息上传给选择按钮,难点 ...

  6. Selenium文件上传

    转自:https://www.cnblogs.com/miaojjblog/p/9679915.html Web上本地上传图片,弹出的框Selenium是无法识别的,也就是说,selenium本身没有 ...

  7. Selenium文件上传问题

     

  8. Python+Selenium - 文件上传

    如下图,从系统点击上传功能,打开到这种如下图页面的才适合本文介绍的处理方法 处理方法一 pywinauto库 优点:可以选择多个文件,路径中有中文也支持 缺点:只能Windows平台使用 安装 pip ...

  9. Python WebDriver 文件上传(一)

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

随机推荐

  1. C#即时释放内存

    using System;using System.Diagnostics;using System.Runtime.InteropServices; [DllImport("kernel3 ...

  2. 转:彻底搞清楚javascript中的require、import和export

    原文地址:彻底搞清楚javascript中的require.import和export   为什么有模块概念 理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块. 但是,Ja ...

  3. tomcat之性能优化

    tomcat是我们常用的web容器,它的性能高低直接影响到应用对外提供服务的能力和用户的体验,所以tomcat的优化至关重要.对于单台tomcat服务器而言,优化主要是两方面:内存优化和配置优化(例如 ...

  4. BPDU报文(传统STP)

    BPDU字段包含的信息: Protocol ID 协议ID Version STP版本(三种) STP(802.1D)传统生成树 值为0 RSTP(.1W)快速生成树 值为2 MSTP(.1S)多生成 ...

  5. zabbix基础服务搭建

    监控系统的介绍 性能优化和监控点 1.cpu           调度器          有效的分配cpu的时间片           上下文切换           运行队列            ...

  6. python 数组中数字求和是否为零

    需求是: 给定一个不少于4个元素的list(4个元素不重复): 请确认是否存在这样的4个元素,使得四数之和为0?如果有打印出符合条件的四个元素,如果没有打印False #!/usr/bin/pytho ...

  7. Maven -- 在进行war打包时排除不需要的文件

    https://blog.csdn.net/zsg88/article/details/78128603 <excludes> <!-- 排除文件,不包含子目录,对WEB-INF目录 ...

  8. Android编程 控件与布局

    控件和布局的继承结构 常用控件 1.TextView <?xml version="1.0" encoding="utf-8"?> <Line ...

  9. vue中动态样式不起作用? scoped了解一下

    vue中style标签使用属性scoped的注意事项 style上添加属性scoped可以实现样式私有化,但是在使用动态样式时,样式会不起作用.可以先去掉scoped

  10. EF:分页查询 + 条件查询 + 排序

    /// <summary> /// linq扩展类---zxh /// </summary> /// <typeparam name="T">& ...