Selenium WebDriver:上传多个文件

Posted

技术标签:

【中文标题】Selenium WebDriver:上传多个文件【英文标题】:Selenium WebDriver: Upload multiple files 【发布时间】:2014-07-20 06:18:21 【问题描述】:

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

有什么想法吗?

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

【问题讨论】:

【参考方案1】:

据我所知,selenium仍然不支持多文件上传(见issue on google code)。

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

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

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

我希望这会有所帮助。

【讨论】:

太棒了!如果不是您的回答,我永远不会意识到行尾是解决方案。适用于 php 中的 georgesironi 硒测试!谢谢你。 看起来 "\n" 解决方案现在也适用于 Firefox。 也支持文件夹上传(也使用 SendKeys),但仅适用于 Chrome(在此 GitHub issue 中提到)。我正在使用带有 Chrome 89 的 Python Selenium 进行测试。不幸的是,它似乎不适用于 Firefox。其他浏览器我没试过。【参考方案2】:

我的解决方案(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)

【讨论】:

【参考方案3】:

我也有机会通过 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");

如果发现任何问题,请查看complete article with video.

【讨论】:

一些帮助您提高帖子质量的反馈:我不知道 AutoIT 是什么;我不知道代码 sn-p 应该是什么语言或上下文应该是什么;并且代码示例充满了“漂亮”的引号并且没有格式化。

以上是关于Selenium WebDriver:上传多个文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Selenium WebDriver 处理 Windows 文件上传?

如何在 Java 中使用 Selenium WebDriver 上传文件

如何使用Selenium WebDriver处理Windows文件上传?

轻松自动化---selenium-webdriver(python)

如何在没有“输入”元素的 Selenium WebDriver 中上传文件

带有 Selenium 的 Python:从文件系统拖放到 webdriver?