升級Selenium WebDriver 3.1.0
後,我收到警告對如何設置硒3.1.0 ImplicitWait
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30));
警告11 'OpenQA.Selenium.ITimeouts.SetScriptTimeout(System.TimeSpan)' 已過時:「這種方法將在未來的版本中被刪除。請改爲設置AsynchronousJavaScript屬性。'
所以我改成了
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);
它好工作與ChromeDriver
,但是當我試圖FireFoxDriver
測試失敗在這條線,拋出一個異常
結果消息:系統。 InvalidOperationException:缺少'type' 參數(IndexOutOfBounds)結果StackTrace:在 OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Responsive SE 錯誤響應)在 OpenQA.Selenium.Remote.RemoteWebDriver.Execute(字符串 driverCommandToExecute,Dictionary`2參數)在 OpenQA.Selenium.Remote.RemoteWebDriver.InternalExecute(字符串 driverCommandToExecute,Dictionary'2參數)在 OpenQA。 Selenium.Remote.RemoteTimeouts.ExecuteSetTimeout(字符串 timeoutType,時間跨度timeToWait)在 OpenQA.Selenium.Remote.RemoteTimeouts.set_ImplicitWait(TimeSpan值) 在 OpenQA.Selenium.Support.Events.EventFiringWebDriver.EventFiringTimeouts.set_ImplicitWait(時間跨度 值)
如何解決這個問題?
我會指出,該解決方案將不用於Firefox 48及以上的工作。通過設置UseLegacyImplementation屬性,您已選擇使用較舊的,不再維護的Firefox驅動程序實現。自動化Firefox 48或更高版本需要使用默認的[geckodriver](https://github.com/mozilla/geckodriver)。 – JimEvans
如果您聲稱使用'options.UseLegacyImplementation = true',那麼我很抱歉,但是,不,您沒有使用geckodriver。 'FirefoxDriver'類的'CreateExecutor'方法明確地分支了這個屬性的值,只有當值爲'false'時才啓動geckodriver。 – JimEvans
@JimEvans我現在注意到了,謝謝。 – Guy