Как запустить Chrome headless с флагом user-data-dir с ChromeDriver версии 83.0.4103.39 и Selenium - PullRequest
1 голос
/ 12 июля 2020

Код

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 Ответ

0 голосов
/ 12 июля 2020

Это сообщение об ошибке ...

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")

Ссылка

Вы можете найти пару соответствующих обсуждений в:

Outro

Пара соответствующих документов:

...