在使用selenium进行UI自动化测试时,经常会遇到一个关于本地文件上传的问题,解决此问题一般分两种情况:

1. 元素标签为input

2.非input型上传

下面我们分别对着两种情况进行实例分析

(一)元素标签为input

此种情况处理比较简单,标签为input的上传,可以直接通过send_keys("本地文件路径")实现

举例:(以百度网盘为例)

 1 # coding:utf-8
 2 from selenium import webdriver
 3 from time import sleep
 4 #声明配置文件路径,在路径前加r标识后面跟的路径原意输出,如果不加r需要对路径中的斜杠进行转义
 5 profile_directory=r"C:\Users\55348\AppData\Roaming\Mozilla\Firefox\Profiles\tqc0968l.default"
 6 #加载配置文件
 7 profile=webdriver.FirefoxProfile(profile_directory)
 8 #启动浏览器配置
 9 driver=webdriver.Firefox(profile)
10 #打开url
11 driver.get("http://pan.baidu.com")
12 #隐式等待
13 driver.implicitly_wait(10)
14 #点击上传,由于上传按钮是input属性的,所以可以直接通过send_keys
15 driver.find_element_by_id("h5Input0").send_keys(r"C:\Users\55348\Desktop\03913f358d9be352bd125ae7087dd0d6.apk")
16 sleep(10)
17 #判断是否上传成功
18 new=driver.find_elements_by_xpath("//*[@title='03913f358d9be352bd125ae7087dd0d6.apk' and @class='xj9QOe']")
19 if len(new)==1:
20     print "upload apk ok"
21 else:
22     print "upload apk failed"
23 driver.quit()

 

(二)非input情况

此种情况处理比较复杂 ,有三种处理方式:①使用 SendKeys第三方库     ②使用AutoIt第三方工具  ③使用win32 GUI工具

  1.1 使用SendKeys第三方库

  首先进行SendKeys第三方库

  pip install SendKeys

  如果出现如下提示:就多试几次。

  如果出现如下提示:,这种情况,可以根据提示Get it from http://aka.ms/vcpython27

即登录此地址下载C++,下载完成后傻瓜式安装即可。

  其次,在第三方库安装完成后,即可进行上传的动作,具体如下:

 1 # coding:utf-8
 2 from selenium import webdriver
 3 from time import sleep
 4 import SendKeys
 5 from selenium.webdriver.common.keys import Keys
 6 #声明配置文件路径,在路径前加r标识后面跟的路径原意输出,如果不加r需要对路径中的斜杠进行转义
 7 profile_directory=r"C:\Users\55348\AppData\Roaming\Mozilla\Firefox\Profiles\tqc0968l.default"
 8 #加载配置文件
 9 profile=webdriver.FirefoxProfile(profile_directory)
10 #启动浏览器配置
11 driver=webdriver.Firefox(profile)
12 #打开url
13 driver.get("http://pan.baidu.com")
14 #隐式等待
15 driver.implicitly_wait(10)
16 #仍以百度网盘为例,本次通过点击上传按钮,进行上传文件选择
17 driver.find_element_by_id("h5Input0").click()
18 SendKeys.SendKeys(r"C:\Users\55348\Desktop\03913f358d9be352bd125ae7087dd0d6.apk")
19 sleep(2)
20 SendKeys.SendKeys("{ENTER}")   #enter键
21 sleep(2)
22 SendKeys.SendKeys("{ENTER}")
23 sleep(5)
24 #判断是否上传成功
25 new=driver.find_elements_by_xpath("//*[@title='03913f358d9be352bd125ae7087dd0d6.apk' and @class='xj9QOe']")
26 if len(new)==1:
27     print "upload apk ok"
28 else:
29     print "upload apk failed"
30 driver.quit()

  1.2 使用AutoIt工具

  下面文章摘录于http://blog.csdn.net/huilan_same/article/details/52208363

  1.3 使用Win32 GUI

  下面文章摘录于http://blog.csdn.net/huilan_same/article/details/52439546

备注:

  多文件的上传,可以将文件路径加入到list中,然后通过for循环读取并上传

  upload_directory=[]

  upload_directory.append[r"c:\1.txt"]

  upload_directory.append[r"c:\2.txt"]

  upload_directory.append[r"c:\3.txt"]

  for file in upload_directory:

     ……

 

 

转载于:https://www.cnblogs.com/VseYoung/p/selenium_upload_python.html

selenium实现文件上传方法汇总(AutoIt、win32GUI、sengkeys)---基于python相关推荐

  1. python 文件上传 web_pythonweb自动化三种文件上传方法

    文件上传三种方式: (一)查看元素标签,如果是input,则可以参照文本框输入的形式进行文件上传 方法:和用户输入是一样的,使用send_keys 步骤:1.找到定位元素,2,输入文件路径 ele=d ...

  2. java 调用 swf 文件上传_java文件上传方法

    文件上传方法(一次上传一个文件,多个文件的话,请写循环调用) Upload.uploadFile(theFile, filePath) 说明: theFile:类型是FormFile filePath ...

  3. 【arduino】arudino开发ESP32 SPIFFS文件上传方法

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 之前发过ESP8266的SPIFFS文件及上传方法: [arduino]arudino ...

  4. java struts2 excel上传_文件上传方法,使用Struts2,实现Excel文件读取并写入数据库技术...

    文件上传方法,使用Struts2,实现Excel文件读取并写入数据库技术 如题:文件信息的批量导入-- 项目中经常会遇到客户的一些单表信息的数据批量导入,也就是提供定制Excel表,再把Excel表中 ...

  5. vue中文件上传方法

    vue中文件上传方法(图片,表格) //html部分 <input type="file" id="people-export" ref="in ...

  6. Selenium的文件上传和操作Cookie等方法_Sinno_Song_新浪博客

    一.文件上传 通过input标签实现的上传功能,可以将其看作是一个输入框,即通过send_keys()指定本地文件路径的方式实现文件上传. 示例:driver.find_element_by_name ...

  7. Selenium自动化测试-文件上传

    ------·今天距2021年还有321天·------ 这是ITester软件测试小栈第96次推文 进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等. 在selen ...

  8. Web文件上传方法总结大全

    文件上传在WEB开发中应用很广泛,我们经常发微博.发微信朋友圈都用到了图片上传功能. 文件上传是指将本地图片.视频.音频等文件上传到服务器上,可以供其他用户浏览或下载的过程. 今天我给大家聊聊常见的文 ...

  9. php后端上传文件,php实现文件上传方法_后端开发

    python计算平均值_后端开发 python计算平均值的方法:1.首先提示用户输入数字:2.然后初始化sum总和的值:3.接着循环输入要计算平均数的数,并计算总和sum的值:4.最后利用公式[总和/ ...

  10. android http文件上传,Android Http文件上传方法和实践

    文件上传在应用中是比较常用的的一种功能,比如用户的意见反馈功能.用户可以上传图片,音视频等文件,方便用户反馈问题的情况. 下来我将和大家一起梳理下需要掌握的知识,少走弯路一步到位,实现文件上传功能. ...

最新文章

  1. 工作?生活?快乐吗?
  2. 30个创意出色的非常实用的jquery框架插件-(视觉大背景,瀑布流效果)
  3. prototype.js ajax.request,prototype.js的Ajax对象分享
  4. 收下这 16 篇最新论文,周会基本不用愁
  5. 【数据库系统概论】考研第二部分重点分析【2.1】
  6. 人生致命的八个经典问题
  7. 百年来,清华为何都没有培养出诺贝尔奖得主?
  8. 领导者的资质——学习笔记(3):领导者的十项职责
  9. 关于计算机游戏的英语读法,关于电脑游戏的英语作文
  10. 支付宝php rsa签名验签工具,alipay rsa2 签名验证
  11. 函数c语言桶排算法,C语言基本排序算法之桶式排序实例
  12. matlab调和均值滤波_matlab均值滤波(原创).doc
  13. 解读全球热点,传递科研进展,这份AI内参要承包你的AI信息源
  14. 读《NoSQL精粹》前三章有感
  15. 视频会议系统gk服务器,TENKING- 远程视频会议系统
  16. 一台计算机多个显示,一台计算机如何有两个显示器并显示不同的内容?
  17. word统计纯汉字字数
  18. html广告sdk,腾讯社交联盟广告
  19. 【STM32】基础知识 第一课 单片机简介
  20. 算法——排序——选择排序图解动画

热门文章

  1. 好莱坞法则_人工智能去好莱坞
  2. append追加的html中富文本失效,jquery append 动态添加的元素事件on 不起作用的解决方案...
  3. centos7 里面dump_centos7使用lldb调试netcore应用转储dump文件
  4. mysql 局部变量集合_mysql全局变量和局部变量
  5. 小学六年级计算机教案超链接,六年级信息技术《制作其他网页》优秀教案
  6. 安装pytorch-metric-learning
  7. 安装allennlp库
  8. C++string的查找和替换
  9. springboot1.5.4 log4j
  10. 【power designer】使用power designer编辑pdm物理模型图时,为字段添加中文备注