Ограничения драйвера Selenium Chrome Веб-парсинг в масштабе

Я планирую использовать драйвер Selenium Chrome для своего проекта, который будет использоваться для парсинга нескольких общедоступных веб-сайтов (что-то вроде байдарки или скайсканера). Таким образом, будет конечная точка REST GET, на которой мой бэкэнд будет запускать безголовый Chrome для очистки нескольких веб-сайтов и, в конечном итоге, возвращать измененный JSON.

Я хочу знать, насколько масштабируемым является драйвер Chrome, поскольку похоже, что экземпляр Chrome без головы должен запускаться всякий раз, когда приходит запрос.

Обновлено: вопрос с использованием Google Chrome Headless


person user1955934    schedule 31.10.2017    source источник


Ответы (3)


Пожалуйста, найдите плюсы и минусы phantom js, которые я заметил во время реализации. Надеюсь, это поможет.

Минусы:

1)It will fail to recognize the browser elements like id,xpath,csselector
when compared to chrome driver.
2)If you have login mechanism ,redirects won't work as you expect when compared to chrome driver.
3)You need to manually implement the custom logic for screen shots for the test failures if you need it.
4)If you want to switch between multiple drivers like chrome,html etc then it is very difficult

Плюсы:

1)Test case execution is faster when compared to chrome driver
2)No browser is required it will run without GUI. 
3)No much configurations are needed when compared to chromedriver.

Вы также можете использовать драйвер html, который намного быстрее фантома, но даже у него есть свои ограничения, о которых вам нужно позаботиться перед внедрением.

person Pradeep    schedule 31.10.2017
comment
он не может распознать атрибут id? Не могли бы вы рассказать и о проблеме с производительностью? возможно ли это для моего варианта использования выше? - person user1955934; 31.10.2017
comment
да, в большинстве случаев он не сможет распознать идентификатор. Производительность зависит от того, насколько велик ваш проект и сколько бизнес-логики имеет ваш код. Если он огромен, он будет очень плохим по сравнению с драйвером Chrome. - person Pradeep; 02.11.2017
comment
Я думаю, что для вашего варианта использования я бы предложил пойти с хромом, поскольку выполнение вызовов веб-службы и получение ответа в фантоме для утверждений занимает довольно много времени. Вы можете попробовать, так как очень сложно сказать, не видя кода. - person Pradeep; 02.11.2017

Я не уверен, что вам действительно нужно использовать PhantomJS.

Пару месяцев назад Chrome реализовал «безголовый» режим. "Headless Chrome" выполняет ту же работу, что и PhantomJS, но делает это лучше. Я слышал, что авторы PhantomJS даже сказали, что больше не будут его поддерживать.

Вы можете включить безголовый режим в Selenide просто онлайн:

Configuration.headless = true;
person Andrei Solntsev    schedule 04.11.2017
comment
Я пытаюсь выяснить, возможно ли использовать безголовый браузер для очистки подобных рабочих процессов. Я попробовал хром без головы, и он очень медленный по сравнению с htmlunit, так как он должен фактически запустить приложение браузера, перейти на веб-сайт, а затем очистить данные ... что, если есть миллионы запросов на очистку веб-сайта? - person user1955934; 07.11.2017

Вы думали о безголовом хроме? Headless Chrome

person ncvetkovic    schedule 03.11.2017
comment
Я знаю об этом, но пока не думаю, что это стабильно - person Pradeep; 03.11.2017
comment
хм, да, но вопрос остается прежним: возможно ли обслуживать большое количество запросов, когда мы собираемся запускать безголовый Chrome каждый раз, когда приходит запрос? - person user1955934; 03.11.2017