问题 webdriver:上传多个文件


我的测试需要在不同的浏览器中上传测试文件。(webdriver + java) 对于单个文件上传,一切正常。我只是发送路径

"C:\\testdata\\testfile.txt"
But, syntax changes for multiple upload and different browsers.

(
IE: 
"\"" + "C:\\Selenium\\TestData\\Flexy - BigFile1.txt"+"\"" +"\""+"C:\\Selenium\\TestData\\Flexy - BigFile2.txt" + "\""

CHROME: 
"C:\\Selenium\\TestData\\Flexy - BigFile1.txt"+"\n"+"C:\\Selenium\\TestData\\Flexy - BigFile2.txt".

FF:对我感到羞耻,但我无法为firexof找到正确的语法:-(。有什么想法吗?

如果所有浏览器都有通用语法,请告诉我们 )


10529
2018-05-30 13:09


起源



答案:


据我所知,硒 仍然 不支持多文件上传(请参阅 谷歌代码问题)。

至少有一种解决方法:显然创建一个包含所需数量的输入字段的表单(请参阅 另一个stackoverflow问题)。不是最好的解决方案,因为它(可能)需要改变你的代码才能使selen工作。

但是,正如你已经发现的那样(感谢这个!),它似乎可以触发chrome中的多个文件上传和(虽然我没有测试它)IE也是如此。

我刚刚确认chrome“\ n”技巧在本地和Browserstack都有效(我使用了他们提供的默认图像),考虑到事物的状态,这对我来说已经足够了。

我希望这有帮助。


12
2017-07-29 14:28



真棒!如果没有你的答案,我将永远不会意识到行尾是解决方案。适用于php中的georgesironi selenium测试!谢谢你。 - samuraiseoul


答案:


据我所知,硒 仍然 不支持多文件上传(请参阅 谷歌代码问题)。

至少有一种解决方法:显然创建一个包含所需数量的输入字段的表单(请参阅 另一个stackoverflow问题)。不是最好的解决方案,因为它(可能)需要改变你的代码才能使selen工作。

但是,正如你已经发现的那样(感谢这个!),它似乎可以触发chrome中的多个文件上传和(虽然我没有测试它)IE也是如此。

我刚刚确认chrome“\ n”技巧在本地和Browserstack都有效(我使用了他们提供的默认图像),考虑到事物的状态,这对我来说已经足够了。

我希望这有帮助。


12
2017-07-29 14:28



真棒!如果没有你的答案,我将永远不会意识到行尾是解决方案。适用于php中的georgesironi selenium测试!谢谢你。 - samuraiseoul


我的解决方案(python中的selenium)只是在上传之前为每个图像路径重复send_keys。

两个文件的示例:

driver.find_element_by_name("filename").send_keys(file_path_1)
driver.find_element_by_name("filename").send_keys(file_path_2)
driver.find_elements_by_xpath("//*[contains(text(), 'Upload')]")[0].send_keys(Keys.RETURN)

0
2018-01-11 09:57





我也有机会通过Selenium上传多个文件。

最后使用AutoIT获得解决方案。

您可以在运行时传递文件路径。

ControlFocus(“File Upload”,””,”Edit1″)
ControlSetText(“File Upload”,””,”Edit1″,$CmdLine[1])
ControlClick(“File Upload”,””,”Button1″)


Runtime.getRuntime().exec("C:\\Users\\Mukesh_50\\Desktop\\My blog\\AutoIT\\fileUpload3.exe"+" "+"C:\\Users\\Mukesh_50\\Downloads\\VerifyTitle.java");

如果发现任何问题,请检查 完整的视频文章。


-3
2018-04-10 06:41



一些反馈可以帮助您提高帖子的质量:我不知道AutoIT是什么;我不知道代码片段应该是什么语言或者应该是什么语境;并且代码示例充满了“漂亮”的引号,并且没有格式化。 - Justin Force