我想寻求帮助,我在没有接口的Windows服务器上运行硒的问题,我收到以下错误:
无法在 http://localhost:49906/上启动驱动程序服务 OpenQA.Selenium.DriverService.Start() at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command 命令执行) at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary'2 参数) at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapability 期望的能力)在 OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapability desiredCapabilities) at OpenQA.Selenium.Chrome.ChromeDriver..ctor(ChromeDriverService service, ChromeOptions options, TimeSpan commandTimeout) at OpenQA.Selenium.Chrome.ChromeDriver..ctor(ChromeOptions options)
将我的目标框架更改为 .NET Core 2.1(以前设置为 .NET Core 3.0) 现在它正在工作。
正如我在这里写的:
当服务启动时,唯一执行的操作是驱动程序服务的进程和对该服务的 api 调用。
可能出现的问题可能是:
- 您无法执行该过程,因为无法访问可执行文件
- 可执行文件不存在
- 权限错误
- 某些配置会阻止您成功执行 API 调用和到达 http://localhost:60623/
- 代理设置(添加
NO_PROXY
排除localhost
的环境变量可能会有所帮助) - 防火墙设置
- 端口已使用
- 代理设置(添加
就我而言,这是因为运行的背景铬进程太多。以管理员身份运行cmd并使用taskkill /f /im chromedriver.exe
杀死所有Chrome驱动程序实例,并使用taskkill /f /im chrome.ext /t
杀死所有Chrome实例使其正常工作。
使用 Selenium 打开的浏览器需要在会话 0(Windows 中的 GUI 界面)中运行。您提供的错误很可能是对此问题的引用。
您可以尝试在无头模式下运行浏览器来解决会话 0 问题,因为它不需要在 UI 中呈现。
如何做到这一点,你可以通过这个链接检查它 无头铬
正在运行 VPN 客户端?为了完全隔离(对于业余爱好者),不能直接访问作为 Ip 和/或主机名的环回(除非客户端提供排除 localhost 或 127.0.0.1(及其 Ipv6 等效项)的可能性 - 当我无法让驱动程序工作时,我一次像疯了一样吓坏了,因为我仍然运行我的 Cyberghost 客户端, 但回到最可能的原因:
特别是在使用端口并且可能有大量驱动程序时,手动管理端口或至少手动检查/设置驱动程序服务的端口会有所帮助。
我是这样做的:我得到所有当前活动的TcpConnections(本地端点)。我从给定范围为驱动程序服务创建一个随机端口,直到当前未使用分配的端口。
var ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();
var tcpConnInfoArray = ipGlobalProperties.GetActiveTcpConnections();
do
{
driverService.Port = Random.Next(29999,65535);
} while (tcpConnInfoArray.Any(d => d.LocalEndPoint.Port == driverService.Port));
似乎Selenium在本地主机上托管了一个无法访问的网络服务器。我禁用了对本地地址的代理,这解决了问题。