我上传了一个图像文件,想用 Selenium (java) 对其进行测试。用户有两个选择。他可以通过拖放从他的本地机器推送图像,或者他可以单击“浏览...”按钮。然后出现浏览器指定的文件选择器。
在 Selenium 中,我尝试了不同的东西。据我所知,Selenium 不提供浏览器外的操作。所以测试拖放功能不是一个可能的解决方案。
所以我尝试单击“浏览”按钮并使用浏览器指定的文件选择器。我找到了一个 YouTube video有人在此对话框中成功选择文件的位置。他上了机器人课,在键盘上做了一些事情。
getDriver().findElement(By.id(BROWSE_BUTTON)).click();
Thread.sleep(5000);
StringSelection stringSelection = new StringSelection("C:\\A.JPG");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
当我调试这些行时,测试在第 1 行的 click() 方法之后挂起。 我使用 Firefox 31.1。
有什么想法吗?也许有一些选择?
在 input[type='file']
中写入文件路径是别无选择的,因为此输入是隐藏的。
最佳答案
隐藏文件输入在 Firefox 或 Chrome 中不是问题。而且,v2.45.0.6 确保 IE 也能处理隐藏文件输入。使用 input[type='file']
的简单 sendkeys()
应该适合您。参见 changelog
编辑
对于 FF,这也可能是一个兼容性问题。但是,Selenium
尚不支持最新版本的 FF。参见 this
第二次编辑
Selenium 2.46 已经发布,IEDriver 现在应该可以使用隐藏文件输入标签了。
关于带有隐藏输入的 Selenium 文件选择器 [type=file],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30574916/