Python Selenium 文件上传之SendKeys
昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了。
当然从折腾了俩小时才上传成功。下面写一下自己操作的步骤
首先网上说的有很多方法
如 input 标签的最好做了,直接定位到元素,然后再sendKeys("value")即可
<input id="file_name" class="text-1 w255" type="text" readonly="" value="" data-file=""/>
奈何研发的同学做成了 readonly 属性的input ,好了学了一点,这种属性的input就没办法 使用 sendkeys了。
只能换其他方法了,
使用 下面 webdriver for python模拟键盘操作
#下面的方式没有成功
#ActionChains(self.driver).send_keys(releaseFile).perform()
#Ctrl + a
# ActionChains(self.driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()
# self.driver.implicitly_wait(5)
# ActionChains(self.driver).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
# self.driver.implicitly_wait(5)
# ActionChains(self.driver).key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()
# time.sleep(2)
# ActionChains(self.driver).key_down(Keys.ENTER).perform()
#self.driver.find_element_by_xpath(".//*[@id='file_name']").send_keys(releaseFile)
发现鼠标实际操作的还是页面,而不是弹出的文件选择框,所以这种方式还是不行。
最后参考
Python selenium文件上传方法汇总
http://www.jb51.net/article/92678.htm
使用了 SendKeys,因为其他方法有的需要安装其他程序
首先要安装SendKeys库,可以用pip安装
pip install SendKeys
安装的过程遇到如下问题

此时需要到 http://aka.ms/vcpython27 下载
https://www.microsoft.com/en-us/download/details.aspx?id=44266

然后执行安装 sendkeys即可成功。
代码如下
#-*-coding:utf-8-*-
#Time:2017/7/1-15:47
#Author:YangYangJun #-*-coding:utf-8-*-import SendKeys #点击上传 下载附件
time.sleep(2)
self.driver.find_element_by_xpath(".//*[@id='down_bar_code_template']").click()
self.driver.implicitly_wait(5)
#releaseFile_Path = os.path.join(os.getcwd(),'test_data')
releaseFile = r'C:\PySpace\CMS\UiTest\test_data' + '\UI_Release01.xlsx'
time.sleep(2)
self.driver.implicitly_wait(5)
self.driver.find_element_by_css_selector(".webuploader-pick").click()
time.sleep(2)
#将路径输入
SendKeys.SendKeys(releaseFile)
time.sleep(2)
#确定路径输入
SendKeys.SendKeys("{ENTER}")
time.sleep(2)
#确定打开按钮
SendKeys.SendKeys("{ENTER}")
time.sleep(2)
self.driver.implicitly_wait(5)
#点击上传
self.driver.find_element_by_xpath(".//*[@id='file_upload_btn']").click()
time.sleep(6)
#提示信息, 上传成功
successTest = u"上传商品成功!"
get_reInfo = self.driver.find_element_by_xpath(".//*[@id='step_05']/ul/li[1]").text
if successTest == get_reInfo:
print u"上传成功!"
#点击查看商品
self.driver.find_element_by_xpath(".//*[@id='view_goods']").click()
drugList = ['阿奇霉素片']
#调用验证及删除函数
self.get_Verify(drugList)
else:
print u"上传失败!"
else:
print u"进入卖家中心失败"
效果如下图

第一个 模拟回车是为了确认输入的文件路径,第二个回车是为了确认点击打开按钮。
至此文件的上传功能就已经完成了。
网上说这种方式有些不稳定,有时间的话可以学习一下其他方法。
Python Selenium 文件上传之SendKeys的更多相关文章
- Python Selenium 文件上传之Autoit
今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python Selenium 文件上传之SendKeys 这种方法直接通过命令行执行脚本时没有问题,可以成功 ...
- Python+Selenium - 文件上传
如下图,从系统点击上传功能,打开到这种如下图页面的才适合本文介绍的处理方法 处理方法一 pywinauto库 优点:可以选择多个文件,路径中有中文也支持 缺点:只能Windows平台使用 安装 pip ...
- Python WebDriver 文件上传(一)
昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直 ...
- Python WebDriver 文件上传(二)
今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python WebDriver 文件上传(一) 这种方法直接通过命令行执行脚本时没有问题,可以成功上传,但是 ...
- Python+Selenium学习--上传文件
场景 文件上传操作也比较常见功能之一,上传功能操作webdriver 并没有提供对应的方法,关键上传文件的思路.上传过程一般要打开一个系统的window 窗口,从窗口选择本地文件添加.所以,一般会卡在 ...
- selenium+Python(文件上传)
文件上传操作也比较常见功能之一,上传功能没有用到新有方法或函数,上传过程一般要打开一个本地窗口,从窗口选择本地文件添加.所以,一般会卡在如何操作本地窗口添加上传文件只要定位上传按钮,通send_key ...
- 自动化测试基础篇--Selenium文件上传send_keys
摘自https://www.cnblogs.com/sanzangTst/p/8358165.html 文件上传是web页面上很常见的一个功能,自动化成功中操作起来却不是那么简单. 一般分两个场景:一 ...
- selenium文件上传的实现
一.对于上传文件, 从手动操作我们可以看出, 需要对window 窗体进行操作, 而对于selenium webdriver 在这方面应用就受到了限制. 但是, 庆幸的是, 对于含有input ele ...
- selenium 文件上传
一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决: 另外一种非input标签实现起来比较困难,可以借助autoit工具或者SendKeys第三方 ...
随机推荐
- lasticsearch -2.3.x head插件安装(windows系统)
1.进入命令行: home键+R 命令: > cd \elasticsearch根目录\bin\ > plugin install mobz/elasticsearch-head 2. ...
- linux 关于redis-trib.rb构建redis集群
之前搭建集群漏下的坑, 今次再搭一次. 环境 ruby环境 yum install ruby rubygems -y redis的gem环境 gem install redis-3.2.2.gem 部 ...
- bzoj 2820 YY的GCD - 莫比乌斯反演 - 线性筛
Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必 ...
- eMMC应用教程:关于RPMB的应用【转】
本文转载自:https://blog.csdn.net/youdianhai/article/details/51246379 RPMB的意思是Replay Protected Memory Bloc ...
- tp框架中的一些疑点知识-5
关于vim中的缓存区的前后bp和bn的界定 通过命令ls可以看到 缓存区的 排序. 最开始打开的文件排在最上面, 序号最小. 那么它们就是 更 前 的缓冲区. 序号更前的用bp, 序号靠后的用bn. ...
- Newcoder 华华给月月出题(线筛)题解
题目描述: 华华刚刚帮月月完成了作业.为了展示自己的学习水平之高超,华华还给月月出了一道类似的题: Ans=⊕Ni=1(iNmod(109+7))Ans=⊕i=1N(iNmod(109+7)) ⊕⊕符 ...
- 102. Binary Tree Level Order Traversal 广度优先遍历
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...
- vue中使用BetterScroll
BetterScroll可以通过给content加min-height实现永远滚动 content千万不可以删除,千万不要在 content上写v-if
- 广告api
appnexus: report timezoom brightroll: report timezoom criteo: report1 report2 用fiddle抓包查看 Taboola: ...
- 【Java】【线程】
/* 栗子 通过Runnable接口实现简历线程实例 */ class Dog implements Runnable{ //重写run函数 public void run(){ int times ...