Selenium Webdriver2.0 处理隐藏元素
来源:互联网 发布:软件投标技术方案 编辑:程序博客网 时间:2024/06/08 10:47
昨个改程序遇到一个问题,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 interactedwith
就是说这个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自动化的时候遇到了界面里有“上传文件”的需求,inputtype='file'加了样式被“美化”没了,直接sendkey不行的时候,在sendkeys之前,用javascript把它给弄出来:
JavascriptExecutorj= (JavascriptExecutor)driver;
j.executeScript("document.findElementById('123').style.display='block';");
然后再WebElement.sendKeys ("c:\abc.txt");
就OK了!这样虽然不太优雅,但也是没有办法中的办法。必竟自动化代码不能卡在这里过不去。文件上传不上去,之后的一系列验证工作都做不了。同理的还有下拉菜单中的二级菜单,有时候一闪就没,也可以把visiblility:hidden改成visible,同时设置好left和top值,让它显示出来。就能继续了。
附上我为了解决这个问题做的网页(为了节省登录产品的时间,我单独做了一个网页来模拟这个问题)
和在firebug里观察到情况。
心里暗叫一声“惭愧”,一直嫌javascript和css麻烦,不愿意碰它们,可终归躲不过只能直面困难了。我爸帮我把多年前的javascript权威指南给带新家去了,以后没事得翻一翻。
点击上传文件按钮->在弹出的文件选择窗口中选择路径和文件,点确定。
要知道弹出窗口属于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.ElementNotVisibleExcepti
就是说这个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自动化的时候遇到了界面里有“上传文件”的需求,inputtype='file'加了样式被“美化”没了,直接sendkey不行的时候,在sendkeys之前,用javascript把它给弄出来:
JavascriptExecutorj= (JavascriptExecutor)driver;
j.executeScript("document.findElementById('123').style.display='block';");
然后再WebElement.sendKeys ("c:\abc.txt");
就OK了!这样虽然不太优雅,但也是没有办法中的办法。必竟自动化代码不能卡在这里过不去。文件上传不上去,之后的一系列验证工作都做不了。同理的还有下拉菜单中的二级菜单,有时候一闪就没,也可以把visiblility:hidden改成visible,同时设置好left和top值,让它显示出来。就能继续了。
附上我为了解决这个问题做的网页(为了节省登录产品的时间,我单独做了一个网页来模拟这个问题)
和在firebug里观察到情况。
心里暗叫一声“惭愧”,一直嫌javascript和css麻烦,不愿意碰它们,可终归躲不过只能直面困难了。我爸帮我把多年前的javascript权威指南给带新家去了,以后没事得翻一翻。
自己学习的心得总结:如果使用jquery的话,可以使用如下方法将元素style.display变成"block"的形式
1.jQuery.find('#t:visible')") 其中t是某个元素的ID;
2. jQuery("#t > a).show() 其中其中t是某个元素的ID。show()方法是显示隐藏的匹配元素,该方法是jquery中带的方法
0 0
- Selenium Webdriver2.0 处理隐藏元素
- Selenium Webdriver2.0 处理隐藏的upload file控件处理
- Selenium Webdriver2.0 处理upload file
- selenium webdriver2.0实现邮件发送
- Selenium Webdriver 处理隐藏元素的问题
- selenium处理隐藏元素的方法
- selenium操作隐藏的元素
- selenium操作隐藏的元素
- Selenium webdriver2学习-1 webdriver各种浏览器
- Selenium webdriver2学习-2 各种定位、浏览器操作
- Selenium WebDriver 弹窗,Frame, 元素处理
- Selenium等待元素的处理方法
- Selenium 找不到元素的处理方法
- java selenium (十四) 处理Iframe 中的元素
- 3.selenium 处理下拉框 元素
- 使用selenium webdriver从隐藏元素中获取文本
- 使用selenium webdriver从隐藏元素中获取文本
- selenium操作隐藏元素——交流帖
- java AC自动机
- 利用Apache的beanutils判断字符串是否为一个合法日期
- java 内存分配及变量存储位置的区别
- [poj 2349]Arctic Network
- Hadoop—Dedut数据去重
- Selenium Webdriver2.0 处理隐藏元素
- jQuery权威指南阅读随笔
- 【软工视频】软件计划
- CentOS下载安装playonlinux
- 【软件使用】解决Firefox在ubuntu和Windows之间同步问题
- Linux内核学习的第一步之README文档解读
- C#编写Windows服务程序图文教程
- c语言题:某电视台举办了低碳生活大奖赛。
- DTB设备树文件结构解析