我试图通过Firefox中的 SendKeys()发送上传按钮的文件路径,它给我一个错误"找不到文件:c: \ FILENAME.TXT(IndexOutOfBounds)"
上传代码:
public static void UploadTheFile()
{
IWebElement fileUpload = Drivers._driverInstance.FindElement(By.Id("file-upload-input"));
try
{
fileUpload.SendKeys(@"C:\test file.txt");
}
catch (Exception e)
{
throw e;
}
//Thread.Sleep(3000);
_wait.Until(d => Drivers._driverInstance.FindElement(By.Id("upload-button")).Displayed);
IWebElement element = Drivers._driverInstance.FindElement(By.Id("upload-button"));
IJavaScriptExecutor js = (IJavaScriptExecutor)Drivers._driverInstance;
js.ExecuteScript("arguments[0].click();", element);
}
相同的代码周五在Firefox 54上运行,它仍可在Chrome和IE中使用。
请告诉我这个问题是否有解决方法。
由于
答案 0 :(得分:2)
这是known issue in geckodriver/marionette。该问题已在更高版本的Firefox中得到修复,并且需要新版本的geckodriver。与此同时,通过在创建Firefox会话时使用的dom.file.createInChild
中将true
首选项设置为FirefoxOptions
,可以解决此问题。
答案 1 :(得分:1)
我遇到了同样的问题并得到了解决,问题出现在Geckodriver中并且问题似乎已修复(check here),但您可能需要等待发布,或者您可以使用测试版我跟着。
这应该可以解决您的问题,并确保在执行测试时加载正确版本的Firefox应用程序。