• 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 <wbr>Webdriver2.0 <wbr>处理upload <wbr>file <wbr>- <wbr>充补

    所以:如果你想在做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里观察到情况。

    Selenium <wbr>Webdriver2.0 <wbr>处理upload <wbr>file <wbr>- <wbr>充补
    来源:http://blog.sina.com.cn/s/blog_539a70d30101ajsg.html

  • 相关阅读:
    2. Add Two Numbers
    1. Two Sum
    leetcode 213. 打家劫舍 II JAVA
    leetcode 48. 旋转图像 java
    leetcode 45. 跳跃游戏 II JAVA
    leetcode 42. 接雨水 JAVA
    40. 组合总和 II leetcode JAVA
    24. 两两交换链表中的节点 leetcode
    1002. 查找常用字符 leecode
    leetcode 23. 合并K个排序链表 JAVA
  • 原文地址:https://www.cnblogs.com/zoeya/p/5086511.html
Copyright © 2020-2023  润新知