实例化 ChromeDriver 时出现 WebDriverException

WebDriverException when Instantiate ChromeDriver

我使用 ChromeDriver 创建的屏幕截图类似于

ChromeOptions options = new ChromeOptions();
options.AddArgument("headless"); 

var driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), options);
driver.Navigate().GoToUrl("http://192.168.15.104:12347/WebPortal/controlSystemInternal");

driver.Manage().Window.Size = new System.Drawing.Size(1800, 1100);
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
wait.Until(ExpectedConditions.InvisibilityOfElementLocated(By.Id("wait")));
var screenshot = (driver as ITakesScreenshot).GetScreenshot();
screenshot.SaveAsFile("c:\temp\screenshot.png");

ChromeDriver.exe 位于执行程序集的目录中。 这在我的开发环境中非常有效。但是当我在生产环境中 运行 这个时,我得到了 Exception

OpenQA.Selenium.WebDriverException: Cannot start the driver service on http://localhost:58266/ bei OpenQA.Selenium.DriverService.Start()
bei OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute) bei OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters) bei OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities) bei OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities) bei OpenQA.Selenium.Chrome.ChromeDriver..ctor(ChromeDriverService service, ChromeOptions options, TimeSpan commandTimeout) bei OpenQA.Selenium.Chrome.ChromeDriver..ctor(String chromeDriverDirectory, ChromeOptions options)

Exception-Message 中的端口号总是不同的。

有人知道哪里出了问题吗?

1.The Chrome驱动程序和 Chrome 浏览器的 Chrome 主要版本可能不同。您可以手动同步它们(不推荐,因为您需要每 1-3 个月执行一次)或自动同步 - 使用 WebDriverManager.
2.检查是否有另一个Chrome驱动进程是运行,你应该在停止使用后dispose/quit驱动程序。我们还在开始测试时使用 taskkill /f /im chromedriver.exe 命令以确保我们以干净的状态开始。

端口号在我们的测试中也总是不同,不会导致问题。但是,如果 Chrome 驱动程序在您的生产机器上使用的端口范围未打开,这也可能是问题的原因。

参考文献:

Getting chrome driver not in path when moving my selenium executable to another computer