我的测试需要在不同的浏览器中上传测试文件。(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找到正确的语法:-(。有什么想法吗?
如果所有浏览器都有通用语法,请告诉我们
)
据我所知,硒 仍然 不支持多文件上传(请参阅 谷歌代码问题)。
至少有一种解决方法:显然创建一个包含所需数量的输入字段的表单(请参阅 另一个stackoverflow问题)。不是最好的解决方案,因为它(可能)需要改变你的代码才能使selen工作。
但是,正如你已经发现的那样(感谢这个!),它似乎可以触发chrome中的多个文件上传和(虽然我没有测试它)IE也是如此。
我刚刚确认chrome“\ n”技巧在本地和Browserstack都有效(我使用了他们提供的默认图像),考虑到事物的状态,这对我来说已经足够了。
我希望这有帮助。
据我所知,硒 仍然 不支持多文件上传(请参阅 谷歌代码问题)。
至少有一种解决方法:显然创建一个包含所需数量的输入字段的表单(请参阅 另一个stackoverflow问题)。不是最好的解决方案,因为它(可能)需要改变你的代码才能使selen工作。
但是,正如你已经发现的那样(感谢这个!),它似乎可以触发chrome中的多个文件上传和(虽然我没有测试它)IE也是如此。
我刚刚确认chrome“\ n”技巧在本地和Browserstack都有效(我使用了他们提供的默认图像),考虑到事物的状态,这对我来说已经足够了。
我希望这有帮助。
我的解决方案(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)
我也有机会通过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");
如果发现任何问题,请检查 完整的视频文章。