硒网络驱动程序:上传多个文件

2022-09-02 22:14:52

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

"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:我找不到正确的语法。

有什么想法吗?

是否有适用于所有浏览器的通用语法?


答案 1

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

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

但是,正如您已经发现的那样(感谢这一点!),似乎确实可以在chrome和IE中触发多个文件上传(尽管我没有测试它)。

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

我希望这有帮助。


答案 2

对我来说,解决方案(python中的硒)是在上传之前为每个图像路径重复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)