使用selenium作自动化时,咱们常常会遇到的一个让人头疼的问题就是文件上传。html
问题的难点在于selenium没法识别并操做Windows窗口,若咱们能够绕过弹出框直接把文件信息上传给选择按钮,难点就解决了。spa
如下是常见页面形式:3d
分析HTML,发现不管是普通前台仍是Extjs,他们的html有一个共同的特色,具备如下代码:code
<input ..... type="file" ...../>
ok,只要咱们使用selenium自带的sendkeys把文件路径(相对绝对无所谓)传给该元素,就可绕过选择窗口直接上传文件.htm
解决方案诞生了对象
driver.findElement(XXXXX).sendKeys("filePath");
Have a Tryblog
博客园上传图片:driver.findElement(By.name("file")).sendKeys("C:\Users\123\Pictures\a.png");图片
QQ邮箱上传附件:driver.findElement(By.name("UploadFile")).sendKeys("C:\Users\123\Pictures\a.png");input
定位元素根据状况而定,不必定用name;文件路径能够使相对路径,你们自行修改就好博客
注意:执行sendKeys的元素必定要符合input和 type="file"条件,不然就是你没找对上传文件的对象,会上传失败的。
像这样的,必定注意不要上传到前面的那个input上,不然会失败的