通过ChromeDriverService连接到远程调试端口时,ChromeDriver v90不会提供正确的URL



我们在C#中使用ChromeDriver连接到设置了远程调试端口9222的Chrome现有实例。以下是我们的连接方式:

var svc = ChromeDriverService.CreateDefaultService(path);
ChromeOptions options = new ChromeOptions();
options.DebuggerAddress = "127.0.0.1:9222";
var driver = new ChromeDriver(svc, options);

var url = driver.Url;

问题在于驱动程序的价值。Url与使用ChromeDriver版本88时的Url不同。
在这一点上以及所有早期版本,驱动程序。Url是Chrome中当前活动选项卡的Url值。因此,如果Chrome打开了五个选项卡,并且选项卡4处于活动状态,则Url就是选项卡4的Url。这是有道理的。

一旦我们升级到90版本,情况就不再是这样了。Url的值似乎是……嗯,这还不清楚。有时是最后一个活动选项卡,有时是其他选项卡,有时则是第一个选项卡。我看不出有什么规律。

这是ChromeDriver中的错误吗?在过去,无论哪个选项卡是活动的,都是那个驱动程序。已生成Url。现在还不确定是什么对我们的代码造成了严重破坏。

更新:如果我打开了两个选项卡,那么驱动程序。Url和驱动程序。标题是指刚刚激活的选项卡。总是另一个选项卡。如果有3个选项卡,它可能是倒数第二个活动选项卡。这感觉就像是内部选项卡阵列中的一个错误。

我也遇到了同样的问题。我用建议的方法解决了这个问题

ChromeDriverService driverService = 
ChromeDriverService.CreateDefaultService();
var options = new ChromeOptions();
options.DebuggerAddress = "127.0.0.1:9222";
var driver = new ChromeDriver(driverService, options);

driver.SwitchTo().Window(driver.WindowHandles[0]); // Switch to the recently opened tab
MessageBox.Show("driver.Url: " + driver.Url);

最新更新