2014年(12)
分类: Web开发
2014-03-26 09:47:19
详细描述:
之前用selenium ide 录制脚本时有上传文件方面的操作,将它转化成rc代码后,那条语句是这样的:
sel.type("id=fileFieldName-file", course_file) 其中course_file是一个路径名。也就是说上传文件只需要定位到正确的input然后赋值就ok了.在fiefox上回放也ok。但是将脚本放在ie浏览器下回放时,就出问题了。执行上传文件的这条语句后,根本没有反应!根本上传不了文件!明明在火狐在是好的啊~!
问题解决:
在网上搜索了很久,发现这是selenium rc的一个bug。出于安全方面的考虑,js不允许修改这类表单,所以最后的type是没法实现的,于是在ie上不能完成上传文件的操作。上传文件只能借助第三方工具,如antoit。
我觉得用第三方工具实在是太麻烦了,于是进一步查找资料了解到用selenium 2也就是selnium webdriver就可以直接通过赋值实现。所以,我果断抛弃了selenium rc 投入了selenium webdriver的怀抱。
于是用webdriver就用以下这个语句就能实现上传文件。
driver.find_element_by_id("fileFieldName-file").send_keys(course_file)
亲测,在ie和火狐上都ok.
在上传文件中,如果你遇到了报WebDriverException的错也许这篇文章能给你帮助:http://blog.sina.com.cn/s/blog_7407815a010170zx.html
如果遇到报badStatuline的错,这篇文章也许有用