我正在使用最新版本的 chrome 驱动程序和 chrome 运行一些 selenium c# chrome 驱动程序测试。
在我的桌面 Windows 10 PC 上它运行良好,但是在生产 Windows Server 2016 中,当 Selenium 尝试启动新进程时出现此错误。
[0703/113439.645:ERROR:process_reader_win.cc(123)] NtOpenThread: {Access Denied} A process has requested access to an object, but has not been granted those access rights. (0xc0000022)
[0703/113439.647:ERROR:exception_snapshot_win.cc(88)] thread ID 21028 not found in process
我之所以在 ServerFault 而不是 StackOverflow 上发帖,是因为
A process has requested access to an object, but has not been granted those access rights
似乎是其他应用程序常见的错误。不过,我相当确定这是一个权限错误。
我以本地管理员身份登录,并运行我的 c# 应用程序,该应用程序以本地管理员身份启动其他进程 ChromeDriver 和 Chrome。
我还将所有人的权限设置为对应用程序文件夹的完全访问。
我还能做些什么来允许我的应用程序、chrome 和 chrome 驱动程序获得更多访问权限?
答案1
此错误信息...
[0703/113439.645:ERROR:process_reader_win.cc(123)] NtOpenThread: {Access Denied} A process has requested access to an object, but has not been granted those access rights. (0xc0000022)
[0703/113439.647:ERROR:exception_snapshot_win.cc(88)] thread ID 21028 not found in process
...意味着Chrome 驱动程序启动的线程无法读取系统资源,因为访问被拒绝。
根本原因
一个常见的原因是拒绝访问正在运行 Chromeroot
用户(administrator
) 在 Linux 上。虽然可以通过--no-sandbox
在创建 WebDriver 会话时传递标志来解决此问题,但这种配置不受支持且强烈不建议使用。您需要将环境配置为以普通用户身份运行 Chrome。
额外考虑
确保这件事:
- 硒升级至当前发布版本版本 3.141.59。
- Chrome 驱动程序已更新至当前版本ChromeDriver v84.0等级。
- 铬合金已更新至当前版本Chrome 版本 84.0水平。(根据ChromeDriver v84.0 发行说明)
- 如果你的基地Web 客户端版本太旧,则卸载它并安装最新的GA和发布版本Web 客户端。
- 干净的你的项目工作区通过你的集成开发环境和重建您的项目仅具有所需的依赖项。
- 采取系统重启。
- 执行你
@Test
的非根用户。 - 总是调用方法
driver.quit()
来tearDown(){}
关闭和销毁WebDriver和Web 客户端实例优雅。