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)