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第三方 ...
随机推荐
- bzoj 4289 Tax - 最短路
题目传送门 这是一条通往vjudge的神秘通道 这是一条通往bzoj的神秘通道 题目大意 如果一条路径走过的边依次为$e_{1}, e_{2}, \cdots , e_{k}$,那么它的长度为$e_{ ...
- 2018年12月7日 字符串格式化2 format与函数1
tp7="i am \033[44;1m %(name)-25.6s\033[0m"%{"name":"sxj2343333"} print ...
- topcoder srm 435 div1
problem1 link 遍历未被删除的叶子结点即可. problem2 link 首先,将所有的蛋白质原子编号,设为$[0,m-1]$,每个原子可能对应多个长度为3的$ACGT$.设$n$为DNA ...
- Eclipse的Servers视图中无法添加Tomcat
问题:Eclipse的Servers视图中无法添加Tomcat,其中ServerName是被置为灰色的,无法编辑,如下图所示: 解决步骤: 关闭Eclipse 找到Eclipse的工作区间,这里假设命 ...
- Web操作web.config
1.引用System.Configuration.DLL 2.引用命名空间System.Configuration和System.Web.Configuration 3.上代码 // 使用指定的虚拟路 ...
- cygwin如何下编译安装tmux?
1. 准备工作 1.1 安装ncurses开发库 apt-cyg install libncurses-deve 1.2 安装libevent apt-cyg install libevent-dev ...
- P2860 [USACO06JAN]冗余路径Redundant Paths tarjan
题目链接 https://www.luogu.org/problemnew/show/P2860 思路 缩点,之后就成了个树一般的东西了 然后(叶子节点+1)/2就是答案,好像贪心的样子,lmc好像讲 ...
- MySQL删除数据库时无响应解决办法
删除远程主机上MySQL中的一个数据库时,远程主机一直在响应,无法正常删除. 这个问题的解决办法如下:在远程主机上登录MySQL,执行show full processlist;观察state和inf ...
- 【AI】微软人工智能学习笔记(二)
微软Azure机器学习服务 01|机器学习概述 首先上一张图, 这个图里面的大神是谁我也不清楚反正,但是看起来这句话说得很有哲理就贴出来了. 所以在人工智能领域下面的这个机器学习,到底是一个什么样的概 ...
- python学习 day017打卡 类与类之间的关系
本节主要的内容: 1.依赖关系 2.关联关系,组合关系,聚合关系 3.继承关系,self到底是什么? 4.类中的特殊成员 一.类与类之间的依赖关系 在面向对象的世界中,类与类中存在以下关系: 1.依赖 ...