使用SendKeys上传文件无法在Firefox 55.0.3中运行

时间:2017-09-04 13:36:00

标签: c# selenium firefox selenium-webdriver geckodriver

我试图通过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中使用。

请告诉我这个问题是否有解决方法。

由于

2 个答案:

答案 0 :(得分:2)

这是known issue in geckodriver/marionette。该问题已在更高版本的Firefox中得到修复,并且需要新版本的geckodriver。与此同时,通过在创建Firefox会话时使用的dom.file.createInChild中将true首选项设置为FirefoxOptions,可以解决此问题。

答案 1 :(得分:1)

我遇到了同样的问题并得到了解决,问题出现在Geckodriver中并且问题似乎已修复(check here),但您可能需要等待发布,或者您可以使用测试版我跟着。

  • 获取最新的GeckoDriver
  • 下载版本Firefox Setup 56.0b5

这应该可以解决您的问题,并确保在执行测试时加载正确版本的Firefox应用程序。