使用selenium做自动化时,我们经常会遇到的一个让人头疼的问题就是文件上传
问题的难点在于selenium无法识别并操作Windows窗口,若我们可以绕过弹出框直接把文件信息上传给选择按钮,问题就解决了。
分析HTML,发现无论是普通前台还是Extjs,他们的html有一个共同的特点,具有以下代码:
<input ..... type="file" ...../>
我们可以使用selenium自带的sendkeys把文件路径(相对绝对无所谓)传给该元素,就可绕过选择窗口直接上传文件.
解决方案: driver.find_element_by_name(XXXXX).sendKeys("filePath")
定位元素根据情况而定,有时候用name定位不到时,可使用xpath进行定位
如:driver.find_element_by_xpath("//li[@id='img_list_1']/input[@type='file']").send_keys('E:\\imgs/1.png')
注意: 执行sendKeys的元素一定要符合 input 和 type="file" 条件,否则就是你没找对上传文件的对象,会上传失败的。
其他类型上传图片
见文章地址:点击打开链接