Selenium 上传文件失败,解决办法一
昨个改程序遇到一个问题,UI上面有需要上传文件的地方。但是我不知道怎么让Selenium完成
点击上传文件按钮->在弹出的文件选择窗口中选择路径和文件,点确定。
要知道弹出窗口属于window的范畴,Selenium只能处理Web page.
Jeremy原先的代码用的是Selenium RC中的
type “filepath+filename”方法。可不知咋搞的反正运行到这里是进行不下去了。
正好借这个机会来研究一下在Webdriver里怎么做。
我自己写了个网页,里面就一句
我先是用Selenium IDE录制了一下, 得到的结果就是:把选择文件的操作变成了一句话type
"path+name"。
RC中的type在Webdriver里对应的应该是webelement.sendkeys ,于是运行了一下真的管用。
不用担心怎么处理弹出窗口的事儿,根本就是跳过了这一步嘛,多省心。
看来之前是我想太多了。
-----------------------------------------------------------------------------------------
上周我测的产品出了新版本,上传文件这块的UI代码改动了一下。
用sendkeys这招竟然过不去,抛出了异常:
org.openqa.selenium.ElementNotVisibleException:
Element is not currently visible and so may not be interacted
with
就是说这个input还在,就是不可见,所以不能sendKeys了。
办法只有一个,就是用javascript把这个input给弄成可见的!
把这句document.findElementById('123').style.visibility='visible';放在selenium
中执行,可是上传文件框还是没出来。我的javascript和css都比较菜,对于显示、隐藏页面元素就只会这一招。正当无奈之际,发现firebug
里html下面,input
这一行是灰的。这应该说明它是隐藏的,可是改哪儿才能管用呢?
我选中了灰的这一行,右边style里显示出了css样式 display:none
百度了一下display都有什么值,有none, inline,
block...,我把none改成了block,页面上出现了又大又丑的
所以:如果你想在做selenium webdriver 2.0自动化的时候遇到了界面里有“上传文件”的需求,input
type='file'
加了样式被“美化”没了,直接sendkey不行的时候,在sendkeys之前,用javascript把它给弄出来:
JavascriptExecutor
j= (JavascriptExecutor)driver;
j.executeScript("document.findElementById('123').style.display='block';
");
然后再WebElement.sendKeys ("c:\abc.txt");
就OK了!这样虽然不太优雅,但也是没有办法中的办法。必竟自动化代码不能卡在这里过不去。文件上传不上去,之后的一系列验证工作都做不了。同理的还有下
拉菜单中的二级菜单,有时候一闪就没,也可以把visiblility:hidden改成visible,同时设置好left和top值,让它显示出来。
就能继续了。
附上我为了解决这个问题做的网页(为了节省登录产品的时间,我单独做了一个网页来模拟这个问题)
和在firebug里观察到情况。
来源:http://blog.sina.com.cn/s/blog_539a70d30101ajsg.html
Selenium 上传文件失败,解决办法一的更多相关文章
- php_admin_value open_basedir 引起的上传文件失败解决方法
为了安全,我们通常会在虚拟主机设置中,加入这一行php_admin_value open_basedir "/usr/local/apache/htdocs/www"但这会导致mo ...
- hadoop上传文件失败解决办法
hadoop上传文件到web端hdfs显示hadoop could only be replicated to 0 nodes instead of 1解决办法 错误状态:在hadoop-2.7.2目 ...
- 使用Xshell的rz命令上传文件失败的解决方法
使用Xshell的rz命令上传文件失败的解决方法 第一种:在home目录下rz上传文件失败,如下: 原因:当前用户不具备权限解决:用 sudo rz 上传即可成功 第二种:对于文件大的rz上传失败的话 ...
- Java+Selenium 上传文件,点击选择“浏览文件”按钮,报错invalid argument
Java+Selenium 上传文件,点击选择"浏览文件"按钮,报错invalid argument 解决代码: Actions action=new Actions(driver ...
- Nginx上传文件失败
公司用Nginx做反向代理,出现了上传文件失败的问题,通过查看错误日志,发现是上传文件太大的缘故. 通过查找资料,才知道nginx默认最大上传文件时1M.这就需要修改配置文件,将上传文件大小进行修改. ...
- hadoop fs -put上传文件失败,WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Problem connecting to server: master:8020
hadoop fs -put上传文件失败 报错信息:(test文件夹是已经成功建好的) [root@master ~]# hadoop fs -put test1.txt /test // :: WA ...
- Chrome不能在网易网盘中上传文件的解决办法
Chrome不能在网易网盘中上传文件的解决办法1. 安装 Adobe Flash Player PPAPI,设置flash插件 chrome://settings/content/flash,许可[* ...
- SecureCRT rz 上传文件失败问题
在把Windows上的文件传至Linux端时用到SecureCRT,一般小文件都没有问题,文件太大时则出现了上传后的文件只有几K大小,当然大于2个G的是不可能传的上去的了.对于几百M到1G多的大文件要 ...
- java前后分离使用fetch上传文件失败500
这次不是写什么技术要点,仅仅是记录一下 最近遇到的一个问题 背景 使用fetch向java后台上传文件时,前端调试报错500,后端的报错为multipart 无法解析,翻译过来大概是这个意思. 由于本 ...
随机推荐
- 1.4.2.5. 测试(Core Data 应用程序实践指南)
测试的方法也很简单: 首先,在AppDelegate.h里面引用CoreDataHelper @property (strong, nonatomic, readonly)CoreDateHelper ...
- 后台邮箱配置SMTP函数,如何把发件人设置为自定义昵称
默认的php的mail函数,太坑爹! 用PHPCMS配置好SMTP后,虽然能发送邮件. 但是收件人一项,显示的是邮箱地址@前面的内容. 今天研究了一下午,终于在一个论坛里找到了答案. 原来PHPCMS ...
- 3D游戏开发之在UE4中创建非玩家角色(NPC)
接着上节我们继续学习,现在我们来创建一些NPC(non-playable characters,非玩家角色).在这个游戏中,当我们靠近NPC时,它们会做出相应的反应. 一 创建C++类 1) 在UE编 ...
- zookeeper 介绍
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等. Zookeeper是hadoop的一个子项目 ...
- 如何用CSS快速布局(一)—— 布局元素详细
要快速进行网页排版布局,则必须对布局的元素有清晰的了解,才不会总是在细节处出错.这一篇先详解有关布局的因素作为布局基础:块级元素and内联元素.盒模型.准确定位.元素对齐.样式继承.下一篇则重点描述快 ...
- [Bullet3]创建世界(场景)及常见函数
创建世界(场景)及常见函数 官方文档:http://bulletphysics.org 开源代码:https://github.com/bulletphysics/bullet3/releases A ...
- nginx : server_name localhost 和 chrome : Provisional headers are shown
问题相关问题现象:解决思路解决方案总结 问题相关 nginx : server_name localhost chrome : Provisional headers are shown 问题现象: ...
- 关于js的parseInt方式在不同浏览器下的表现
今天开发期间遇到个需求要把日期格式转换成毫秒数 日期为:2015-08-10 split之后使用parseInt将2015,08,10分别转化为数字格式. 但是使用parseInt('08')的时候却 ...
- GitHub 上下载代码运行报错 :'The sandbox is not sync with the Podfile.lock\'
问题描述: github下载的Demo,很多时候使用到CocoaPods,有的时候因为依赖关系或者版本问题不能编译运行.出现例如The sandbox is not sync with the Pod ...
- Windows 10 IoT Serials 6 - 如何修改IoTStartupOnBoot.cmd文件
使用Windows 10 IoT Core系统的朋友应该会比较熟悉IoTStartupOnBoot.cmd文件,该文件是系统启动以后加载的批处理文件,一般会包含应用.服务和后台的启动,比如WinRM. ...