Как запустить Chrome без головы с флагом user-data-dir с ChromeDriver версии 83.0.4103.39 и Selenium
Код
ChromeOptions options = new ChromeOptions();
options.AddArguments("--headless");
options.AddArguments("--disable-gpu");
options.AddArguments("--disable-software-rasterizer");
options.AddArguments("--user-data-dir=/profiles/" + profile);
options.AddArguments("--disable-software-rasterizer");
options.AddArguments("--window-size=1920x1080");
options.AddArguments("--disable-extensions");
options.AddArguments("--disable-plugins-discovery");
IWebDriver webDriver = new ChromeDriver(options);
WebDriverWait wait = new WebDriverWait(webDriver, TimeSpan.FromSeconds(15));
webDriver.Navigate().GoToUrl(@"someUrl"); ---> Here code stucks
Ошибка:
OpenQA.Selenium.WebDriverException: "HTTP-запрос к удаленному серверу WebDriver для URL-адреса http://localhost:64225/ сеанс истек через 60 секунд".
Я тоже пробовал
options.AddArguments("--disable-dev-shm-usage");
options.AddArguments("--no-sandbox");
Консольный вывод
"A cookie associated with a cross-site resource at
<SomeSite> was set without the `SameSite` attribute.
A future release of Chrome will only deliver cookies
with cross-site requests if they are set with
`SameSite=None` and `Secure`. You can review cookies
in developer tools under Application>Storage>Cookies
and see more details at
https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.",
source: <someURL> (0)
1 ответ
Решение
Это сообщение об ошибке...
OpenQA.Selenium.WebDriverException: 'The HTTP request to the remote WebDriver server for URL http://localhost:64225/session timed out after 60 seconds.
... означает, что ChromeDriver не смог инициировать / создать новый контекст просмотра, то есть сеанс браузера Chrome с использованием желаемого профиля Chrome.
Согласно обсуждению в разделе Как открыть профиль Chrome с помощью аргумента --user-data-dir Selenium вместо указания только имени каталога черезuser-data-dir
, Вам нужно пройти полный путь изuser-data-dir
.
Решение
Итак, вам нужно заменить строку кода:
options.add_argument("user-data-dir=bot_data")
С:
options.add_argument("user-data-dir=C:\\Users\\AtechM_03\\AppData\\Local\\Google\\Chrome\\User Data\\bot_data")
Ссылка
Вы можете найти пару соответствующих обсуждений в:
- Как использовать профиль Chrome в Selenium Webdriver Python 3
- Селен: укажите на сеанс Chrome по умолчанию
Outro
Пара соответствующих документов: