下面的代码在Firefox中工作正常,它在不打开文件上载窗口的情况下上传文件,但在Internet Explorer 11中 文件上传对话框已打开。
假设驱动程序是健康的WebDriver实例:
WebElement fileInput = driver.findElement(By.xpath("//input[@type='file']"));
fileInput.sendKeys("C:/path/to/file.jpg");
我们的想法是直接将文件的绝对路径发送到您通常会单击的元素以获取模态窗口 - 即<input type='file' />
元素。
为什么在IE 11中打开文件上传窗口以及如何解决此问题?
我需要在浏览器堆栈上测试脚本,这样在上传文件时不应该打开文件对话窗口。
答案 0 :(得分:0)
IE总是打开此对话框,因为它无法禁用。但是,这并不意味着这会破坏您的测试。出于某种原因,Selenium可以将文件路径输入到此对话框中并仍然上传(不要问我为什么它可以进入此对话框中的路径,因为我没有线索)。
问题是在此对话框中输入路径时出现超时。 Selenium可能太快并且在对话框正确打开之前尝试进入路径。您需要做的就是增加此超时。为此,您可以添加一个属性以获得所需的功能
{
'browserName': 'internet explorer',
'ie.fileUploadDialogTimeout': 10000
}
这将在输入路径之前设置10秒的超时。