使用ExecuteAsyncScript(正在等待JS结果)后,Selenium ChromeDriver的方法会被阻止吗?

时间:2018-11-05 12:38:32

标签: .net selenium selenium-webdriver selenium-chromedriver

在体验Selenium驱动程序后,我强烈感觉到这是 越野车 ,而且确实很难控制。我不确定Java版本是否也是这种情况,但是在这里我要说的是.NET版本(使用nuget安装:Selenium.WebDriver)。

我正在模仿ExecuteAsyncScript会阻塞一段时间的情况,然后再从javascript返回一些结果。但是 它的调用被放在另一个线程上 ,这使当前的UI线程免于阻塞,如下所示:

//this helps mimic the blocking situation better
_driver.Manage().Timeouts().AsynchronousJavaScript = TimeSpan.FromDays(1);
Task.Run(() => {
                _driver.ExecuteAsyncScript("");
               });

在那之后,我无法在_driver的{​​{1}}实例上做很多事情(我还没有尝试过,但看起来像所有东西),实际上我想要的只是关机/关闭/处置驱动程序,而不会像这样被阻塞:

ChromeDriver

但是,它将永远(也无法)完成,只是永远被阻止。如果在UI线程上,则UI将被冻结;如果在专用线程上,则什么都不会发生(但调试显示该调用始终被阻止,从而使该线程永不退出)。因此,在这种情况下,我 不能 销毁_driver.Quit(); 实例。

在我使用的任何标准/原始开发的.NET库中,它是如此荒谬并且很少(如果不是要表示 从不 )。我知道这个.NET版本的Selenium只是从Java版本移植而来的,所以看起来这是某种Java代码质量吗? (在使用_driver(另一个从Java到.NET的移植库,但用于Excel处理,它的设计是如此糟糕的时候,我确实经历了类似的感觉)。

0 个答案:

没有答案