昨个改程序遇到一个问题,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 上传文件失败,解决办法一的更多相关文章

  1. php_admin_value open_basedir 引起的上传文件失败解决方法

    为了安全,我们通常会在虚拟主机设置中,加入这一行php_admin_value open_basedir "/usr/local/apache/htdocs/www"但这会导致mo ...

  2. hadoop上传文件失败解决办法

    hadoop上传文件到web端hdfs显示hadoop could only be replicated to 0 nodes instead of 1解决办法 错误状态:在hadoop-2.7.2目 ...

  3. 使用Xshell的rz命令上传文件失败的解决方法

    使用Xshell的rz命令上传文件失败的解决方法 第一种:在home目录下rz上传文件失败,如下: 原因:当前用户不具备权限解决:用 sudo rz 上传即可成功 第二种:对于文件大的rz上传失败的话 ...

  4. Java+Selenium 上传文件,点击选择“浏览文件”按钮,报错invalid argument

    Java+Selenium 上传文件,点击选择"浏览文件"按钮,报错invalid argument 解决代码: Actions action=new Actions(driver ...

  5. Nginx上传文件失败

    公司用Nginx做反向代理,出现了上传文件失败的问题,通过查看错误日志,发现是上传文件太大的缘故. 通过查找资料,才知道nginx默认最大上传文件时1M.这就需要修改配置文件,将上传文件大小进行修改. ...

  6. 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 ...

  7. Chrome不能在网易网盘中上传文件的解决办法

    Chrome不能在网易网盘中上传文件的解决办法1. 安装 Adobe Flash Player PPAPI,设置flash插件 chrome://settings/content/flash,许可[* ...

  8. SecureCRT rz 上传文件失败问题

    在把Windows上的文件传至Linux端时用到SecureCRT,一般小文件都没有问题,文件太大时则出现了上传后的文件只有几K大小,当然大于2个G的是不可能传的上去的了.对于几百M到1G多的大文件要 ...

  9. java前后分离使用fetch上传文件失败500

    这次不是写什么技术要点,仅仅是记录一下 最近遇到的一个问题 背景 使用fetch向java后台上传文件时,前端调试报错500,后端的报错为multipart 无法解析,翻译过来大概是这个意思. 由于本 ...

随机推荐

  1. KERNEL32相关函数

    CALL DWord Ptr [<&KERNEL32.WriteFile>] kernel32.WriteFile 将数据写入一个文件,也可将这个函数应用于对通信设备.管道.套接字 ...

  2. 一个简单的Java集合范围过滤的多个方式对比

    在一个项目里面有这么一个技术需求: 1.集合中元素个数,10M 2.根据上限和下限从一个Set中过滤出满足要求的元素集合. 实际这个是个很典型的技术要求, 之前的项目也遇见过,但是因为当时的类库不多, ...

  3. HDU-2058-The sum problem(数学题技巧型)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2058 思路: 这题的n,m都很大,很显然直接暴力,会超时,那就不能全部都找了,利用等差数列求和公式, ...

  4. JVM内存划分基础知识

    第一部分 JVM内存划分 目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbag ...

  5. iOS oc和swift中协议的使用

    创建一个空的工程 在工程中我们新建一个类 继承与NSObject 定义一个协议‘ @protocol UpdateAlertDelegate <NSObject> //这里的红色字体就是我 ...

  6. Flex timer使用 keydown事件注册到stage

    Flex timer使用 keydown事件注册到stage: <?xml version="1.0" encoding="utf-8"?> < ...

  7. xmlns:xsi ——是指xml文件遵守xml规范,xsi全名:xml schema instance

    http://blog.sina.com.cn/s/blog_4b6f8d150100nx3e.html http://blog.csdn.net/iaiti/article/details/4226 ...

  8. 黑客常用的windows注册表大全

    目录 使系统没有"运行"选项                        1让操作系统无"关闭系统" 选项                    2让操作系统 ...

  9. ASP.NET Zero--15.一个例子(8)商品分类管理-权限控制

    1.添加权限常量 打开文件AppPermissions.cs [..\MyCompanyName.AbpZeroTemplate.Core\Authorization\AppPermissions.c ...

  10. ActionMode 就记这么一点,不能更多了

    话说程序猿都是段子手,看到有的程序猿写文章,前面都会先写一个段子,我这么有幽默感的段子手,也决定效仿一下. "段子." 写完段子,下面开始进入正题. 今天要说的 ActionMod ...