分类:
2012-09-28 17:09:09
driver.findElement(By.xpath("//input[@type='file']"))).sendKeys("C:\\testContent.pdf");
//这个比较好理解,先定位,然后把文件的路径放入输入内容。
ABiz的附件比较特殊,是通过flash控件进行附件上传,Webdriver没有现成的方法。
研究了下附件的上传过程:
flash控件的附件上传与普通的附件上传实现方式不一样:
1、普通的附件上传,都是将附件路径作为一个值放入form表单,然后在提交的时候将这个值提交给服务器
2、Abiz的附件上传是首先把附件上传到系统数据库当中,然后由数据库返回一个img的ID给浏览器,修改或新增某个隐藏的input标签,给图片参数赋值,等待提交表单的操作。
解决方案:可以伪造实现过程,直接在表单中插入/修改某个代表图片信息的input标签,然后提交,操作可以用JS来实现。
注册第二步,上传公司图片功能:
1、未上传图片
2、已上传图片
Java代码
刚开始只执行了JS2,但是脚本总是执行失败,查看页面元素发现,id=comTempPhotoId的元素的父元素的style在有图片的时候值是空。
对于Webdriver来说,sytle=display:none的标签是无法定位的,所以只有再加上JS1,才能实现修改value值的目的。
添加实名信息表单中上传图片功能:
1、未上传图片
2、已上传图片
JAVA代码
因为无论是否上传图片,对该标签的父元素没有任何影响,所以不需要像处理注册一样先调整父标签的属性让Webdriver可读
本来以为这样过不了JS校验,但是最后发现开发的JS就是用value值是否为空进行判断的。