Selenium FindElement и Chrome в режиме без головы

После запуска chromedriver.exe в режиме без головы следуйте этому совету и используя только эти аргументы

 options.AddArgument("headless");
 options.AddArgument("window-size=1280,960");

Хромированная отвертка открывается незаметно. Но команда Selenium FindElement() ничего не находит на странице Chrome без заголовка. Вместо этого он выдает это исключение:

Исключение типа OpenQA.Selenium.NoSuchElementException произошло в WebDriver.dll, но не было обработано в пользовательском коде.

Дополнительная информация: нет такого элемента: невозможно найти элемент:

Q1: Кто-нибудь успешно запускал команды Selenium в безголовом режиме Chrome?

Q2: Удалось ли вам использовать FindElement с хромированным драйвером, работающим в безголовом режиме? Если да, то как вы это сделали?


После прочтения, возможно, может понадобиться что-то в этом роде? Добавьте это в параметры запуска Chrome, а затем, возможно, подключите к нему chromedriver?
"remote-debugging-port=9222"
Но с этим параметром IWebDriver и chromedriver не открываются.


Справочная информация: чтобы ответить, зачем вам это нужно? Основная причина заключалась в том, что тесты выполнялись как часть CI. Это тесты, которые выполняются на виртуальной машине и могут не поддерживать мониторы 1080p. Если бы мы запустили его в безголовом режиме и установили разрешение таким образом, мы могли бы.


person jmbmage    schedule 11.08.2017    source источник
comment
SpecFlow не имеет FindElements. Это не имеет ничего общего с автоматизацией браузера. Этот выпуск касается Selenium.   -  person Andreas Willich    schedule 11.08.2017
comment
Я все время использую Selenium + Chrome без головы. Не знаю, как это вам поможет, так как я не понимаю, в чем ваш вопрос. Возможно, прочтите Как спросить.   -  person SiKing    schedule 02.10.2017
comment
Похоже, эта проблема возникает, если задействован прокси (например, proxymob или аналогичный) при использовании Selenium + Chrome + SomeProxy (for diverting calls to end points while running your non-Unit tests like IT/FT/Selenium browser based tests etc) + running tests in HEADLESS mode. Я бы сказал, попробуйте использовать другой прокси-сервер (Traefik и т. Д.).   -  person AKS    schedule 25.10.2017
comment
Это может быть связано с этой ошибкой: github.com/SeleniumHQ/selenium/issues/4477   -  person Phyxx    schedule 27.01.2018


Ответы (1)


Добавьте следующие строки кода в свой основной класс:

ChromeOptions options = new ChromeOptions(); 
options.setHeadless(true); 
options.addArguments("--window-size=1920,1080"); 
options.addArguments("--disable-gpu"); 
options.addArguments("--disable-extensions"); options.setExperimentalOption("useAutomationExtension", false); options.addArguments("--proxy-server='direct://'"); 
options.addArguments("--proxy-bypass-list=*"); 
options.addArguments("--start-maximized");
options.addArguments("--headless"); 
WebDriver driver = new ChromeDriver(options);
person Vasista TVN    schedule 01.05.2019