首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Selenium 3.1.0中设置ImplicitWait

如何在Selenium 3.1.0中设置ImplicitWait
EN

Stack Overflow用户
提问于 2017-02-22 09:34:17
回答 2查看 3.4K关注 0票数 1

升级Selenium WebDriver 3.1.0后,我收到了关于

代码语言:javascript
复制
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30));

警告11 'OpenQA.Selenium.ITimeouts.SetScriptTimeout(System.TimeSpan)‘已过时:“此方法将在将来的版本中删除。请设置AsynchronousJavaScript属性。”

所以我把它改成了

代码语言:javascript
复制
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);

它在ChromeDriver中运行得很好,但是当我尝试FireFoxDriver时,测试在这一行失败了,引发了一个异常

结果消息:缺少“类型”参数(IndexOutOfBounds)结果( OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)在OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute,Dictionary'2参数)在OpenQA.Selenium.Remote.RemoteWebDriver.InternalExecute(String driverCommandToExecute,字典‘2参数)在OpenQA.Selenium.Remote.RemoteTimeouts.ExecuteSetTimeout(String timeoutType,(以OpenQA.Selenium.Remote.RemoteTimeouts.set_ImplicitWait(TimeSpan值计算)( OpenQA.Selenium.Support.Events.EventFiringWebDriver.EventFiringTimeouts.set_ImplicitWait(TimeSpan值))

如何解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-22 09:34:17

在深入研究源代码 in github之后,我发现ImplicitWaitsetget方法正在使用(在较低级别) ICommandExecutor来设置和获取值。在父FireFoxDriver中初始化此变量的唯一RemoteWebDriver构造函数是

代码语言:javascript
复制
public FirefoxDriver(FirefoxDriverService service, FirefoxOptions options, TimeSpan commandTimeout) : base(CreateExecutor(service, options, commandTimeout), ConvertOptionsToCapabilities(options))

它触发基构造函数。

代码语言:javascript
复制
public RemoteWebDriver(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)

FirefoxDriver中的方法FirefoxDriver(初始化基时在构造函数中调用)检查firefoxOptions成员UseLegacyImplementation,并在未解决问题的false时返回DriverServiceCommandExecutor,当true时返回FirefoxDriverCommandExecutor。默认情况下,UseLegacyImplementationfalse,因此应该将其设置为true

对我有效的解决办法是

代码语言:javascript
复制
FirefoxOptions firefoxOptions = new FirefoxOptions
{
    Profile = fxProfile, // I'm using FirefoxProfile as well
    UseLegacyImplementation = true
};

IWebDriver driver = new FirefoxDriver(FirefoxDriverService.CreateDefaultService(), firefoxOptions, TimeSpan.FromSeconds(30));
票数 7
EN

Stack Overflow用户

发布于 2017-03-06 10:38:12

我的项目中也有同样的问题。然而,一个短期的解决方案将是回滚到以前版本的webdriver。

我希望这能帮到你!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42387701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档