繁体   English   中英

Selenium API 在 Chrome 浏览器中不工作

[英]Selenium API is not working in Chrome browser

我在 C# 中创建了一个基本的 Selenium 控制台应用程序,它打开一个URL ,登录并执行一些活动。

该代码在 Dev VM 中运行良好,但相同的代码在生产 VM 中不起作用。 在 Prod VM 中,代码只是打开 URL(登录页面),它不处理任何内容。

我用谷歌搜索并尝试添加不同的选项,但没有任何效果。

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.AddArgument("--incognito");
chromeOptions.AddArgument("no-sandbox");
chromeOptions.AddArgument("disable-infobars");
chromeOptions.AddArgument("--ignore-ssl-errors");
chromeOptions.AddArgument("--ignore-certificate-errors-spki-list");
chromeOptions.AcceptInsecureCertificates = true;
string path = @"local Chromedriver.exe(103.0.5060.134) path";
IWebDriver driver = new ChromeDriver(path, chromeOptions, TimeSpan.FromMinutes(2));
driver.Url = "url";

我有 chromedriver 103.0.5060.134 ,与 chrome 浏览器的版本相同。 不知道我还需要检查什么。

主要错误是:

[67852:69648:0818/112450.083:ERROR:ssl_client_socket_impl.cc(996)] handshake failed; returned -1, SSL error code 1, net_error -101 

这在开发实例中没有发生。 这是我在生产中得到的: 在此处输入图像描述

铬版在此处输入图像描述

更新

我已将 Chrome 驱动程序更新为104版本,并将 Chrome 浏览器更新为104.0.5112.102 ,但仍然出现相同的错误。 在此处输入图像描述

更新的 Chrome 版本在此处输入图像描述

我在 dev 中有相同的驱动程序版本和 chrome 版本,它工作正常。 有没有办法让我获得额外的日志? 不知道为什么在生产中完全失败。

首先,此错误消息...

[67852:69648:0818/112450.083:ERROR:ssl_client_socket_impl.cc(996)] handshake failed; returned -1, SSL error code 1, net_error -101 

...意味着 ChromeDriver 和 Chrome 浏览器之间的握手在某些时候失败了。


细节

根据ERROR:ssl_client_socket_openssl.cc 握手失败,主要问题是当ChromeDriverChrome中的SSL 页面握手时握手失败 虽然Chromium团队通过net_unittestscontent_testsbrowser_testsSSL 握手进行了测试,但并不详尽。 依赖上游测试,一些用例被遗漏了。


强制检查

始终确保:


不需要的 Arguments

不是很清楚为什么需要添加这么多 arguments。 然而,

  • --incognito :没有必要,因为ChromeDriver启动的会话默认是沙盒的。 所以你可以丢弃它。
  • --no-sandbox :除非您的程序在启动过程中以root用户(管理员)身份在 Linux 上执行时崩溃,否则不需要。 所以你可以删除它。
  • disable-infobars :它不再有效。 所以你可以丢弃它。
  • --ignore-certificate-errors-spki-list :除非--user-data-dir参数也存在,否则无效。 所以你可以删除它。

结合上述更改,您会很喜欢 go。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM