Selenium - 声明WebDriver后如何更改"CommandTimeout"



我正在声明我的硒web驱动器参考:

var driver = new FirefoxDriver(service, 
    new FirefoxOptions { 
        BrowserExecutableLocation = "XXXX", 
        Profile = firefoxProfile, 
        UseLegacyImplementation = true }, 
    new TimeSpan(0, 1, 30)); 

它有99%的时间工作很棒,但是在某些情况下,我想将默认的" CommandTimeout"更改为90秒以外的其他情况。如何在不重新定义驾驶员的情况下执行此操作?

我已经探索了以下类的所有方法/属性,并且似乎没有任何改变有任何效果:

driver.Manage().Timeouts()

也有这篇文章,但与" CommandTimeout"无关。有这个,在创建驾驶员之后并没有真正覆盖。有关硒超时的大多数帖子都与隐式等待或其他各个超时有关,而不是驾驶员声明中指定的超时值。

为什么之后需要设置commandTimeout?实际上,这只是驱动程序不再响应的备份。它与自己驾驶浏览器无关。

查看硒源代码,您可以看到commandTimeout参数传递到RemoteWebdriver.ICommandExecutor字段,即private。这意味着,在初始化之后,无法再访问或更改命令超时。

非常骇人听闻的,当然不建议使用"解决方案",因为这可能是使用反射来访问该属性。但是,这肯定不建议这样做,因为它在很大程度上取决于您使用的驱动程序,因此可以随时破裂。

如果您偶尔需要大量超时,通常最好将commandTimeout设置为高价值,并使用ImplicitWait&公司

相关内容

  • 没有找到相关文章

最新更新