Java Selenium WebDriver:上载多个文件

Java Selenium WebDriver:上载多个文件,java,file,selenium-webdriver,upload,Java,File,Selenium Webdriver,Upload,我的测试需要在不同的浏览器中上传测试文件(我使用WebDriver+Java)。 对于单个文件上传,一切正常。我只是发送路径 "C:\\testdata\\testfile.txt" But, syntax changes for multiple upload and different browsers. ( IE: "\"" + "C:\\Selenium\\TestData\\Flexy - BigFile1.txt"+"\"" +"\""+"C:\\Selenium\\TestDa

我的测试需要在不同的浏览器中上传测试文件(我使用
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".
Firefox:我找不到正确的语法

有什么想法吗


所有浏览器都有通用语法吗?

据我所知,selenium仍然不支持多文件上传(请参阅)

至少有一种解决方法:显然,创建一个包含所需输入字段的表单(请参阅)。这不是最好的解决方案,因为它(可能)需要修改您的代码以使selenium正常工作

然而,正如您所发现的(谢谢!),在chrome和(尽管我没有测试)IE中触发多个文件上传似乎也是可能的

我刚刚确认chrome“\n”技巧在本地和Browserstack上都有效(我使用了它们提供的默认图像),考虑到情况,这对我来说已经足够好了


我希望这有帮助

我也有机会通过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");
如果发现任何问题,请检查

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

两个文件的示例:

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)

一些反馈可以帮助你提高帖子的质量:我不知道它是什么;我不知道代码片段应该用什么语言,或者上下文应该是什么;代码示例充满了“漂亮”的引号,并且没有格式化。太棒了!如果不是你的回答,我永远不会意识到这条线的尽头是解决问题的办法。适用于php中的Georgestini selenium测试!谢谢。看起来“\n”解决方案现在也可以在Firefox中使用。也支持文件夹上载(也可以使用SendKeys),但仅适用于Chrome(本文中提到)。我正在使用Python Selenium和Chrome89进行测试。不幸的是,它似乎不适用于Firefox。我还没有尝试过其他浏览器。