Selenium ChromeDriver在运行一小时后出现错误

nwwlzxa7  于 2023-01-02  发布在  其他
关注(0)|答案(1)|浏览(537)

我是新 selenium 和我试图建立一个机器人做一些逻辑上的一个特定的网站。我使用C#. NET 4.6, chrome v.108和最新的 selenium 和 chrome 驱动程序从Nuget。流程本身可以不到几秒钟,如果它失败了,我希望它再试一次,直到它会完成它。
可能,它可以运行很多小时(甚至一两天),直到它将成功。然而,在一两个小时后,它开始抛出很多异常,最常见的是以下三个:

disconnected: Unable to receive message from renderer
  (failed to check if window was closed: disconnected: Unable to receive message from renderer)
  (Session info: headless chrome=108.0.5359.125)*

An unknown exception was encountered sending an HTTP request to the remote WebDriver server for URL ___localhostURL___ The exception message was: An error occurred while sending the request.

The HTTP request to the remote WebDriver server for URL ___localhostURL___ timed out after 60 seconds.

我试着运行我的机器人,既在我的机器上,也在 Docker 上,过了一段时间我得到了同样的错误。
我在网上搜索这些错误,并尝试了一些解决方案(其中大多数是添加一些参数到ChromeOptions),但实际上他们没有帮助我这么多,我仍然得到这些错误。
这是我的代码:

private void Func()
{
    var status = Status.Failed;
    ChromeDriver driver = null;

    var options = new ChromeOptions();
    options.AddArgument("--headless");
    options.AddArgument("--user-agent='Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 640 XL LTE) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10166'");
    options.AddArgument("--no-sandbox");
    options.AddArgument("--disable-gpu");
    options.AddArgument("--disable-dev-shm-usage");
    driver = new ChromeDriver(path/to/chromedrive.exe, options);
    //driver = new RemoteWebDriver(new Uri(dockerUrl), options);

    do
    {
        try
        {
            driver.Navigate().GoToUrl(PageUrl);
            status = Func2(driver);
        }
        catch (Exception ex)
        {
            WriteException(ex);
        }
    } while (status == Status.Failed);

    driver?.Quit();
}
  • 用户代理的说法是因为特定的网站屏蔽了无头浏览器,这就是我如何发现如何绕过这个屏蔽的。
  • 所有其他的论点是一个解决方案,我发现,以解决上述问题,并没有帮助这么多。
  • 我知道我可以在每次迭代时使用driver.Navigate().Refresh();而不是driver.Navigate().GoToUrl(PageUrl);,但是使用Refresh()时,它并没有做我想要做的事情,因为它刷新的是当前页面,而不是主页面。
  • 使用RemoteWebDriver(将在Docker上运行机器人)和ChromeDriver时,我都会得到相同的错误。
  • 我尝试没有路径chromedriver.exe(实际上我不知道我需要这一个在所有,因为它的工作原理一样,没有它),但无论有或没有路径chromedriver.exe它仍然得到这些错误。
  • 这些错误在GoToUrl行上出现

有什么见解或提示要更改什么或检查什么来解决我的问题吗?
谢啦,谢啦

vc9ivgsu

vc9ivgsu1#

显然,这一切都是因为我的笔记本电脑睡眠模式。
当我把它改为“从来没有”,它似乎固定和运行超过24小时,没有任何问题。

相关问题