Можно ли использовать selenium, но не открывать браузер?
Смею предположить что именно безглавые режимы работы вам и нужны))) Так как использовать селениум без браузера в принципе, это наверное какая-то новая техника о которой я не знаю))))
В принципе сейчас можно запустить Хром и Файрфокс в режиме headless, или использовать PhantomJS.
Если вам необходимо взаимодействовать с сайтом, или запарсить информацию, но не скачивать файлы, то хорошим вариантом будет PhantomJS. Всё что вам нужно это просто запустить его, автор создал его как раз для работы в строке, и поэтому никаких режимов запуска к нему приписывать не нужно, вот пример:
from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities ua = dict(DesiredCapabilities.PHANTOMJS) ua["phantomjs.page.settings.userAgent"] = ("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36") browser = webdriver.PhantomJS(desired_capabilities=ua) browser.set_window_size(1920, 1080) browser.get('https://www.google.com/')
Второй вариант, это Chrome в режиме headless
. Так как изначально браузер работает в графическом представлении, при его запуске этот режим нужно указать:
from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities ua = dict(DesiredCapabilities.CHROME) options = webdriver.ChromeOptions() options.add_argument('headless') options.add_argument('window-size=1920x935') browser = webdriver.Chrome(chrome_options=options) browser.get('https://www.google.com/')
Однако 1. Для загрузки файлов в headless Хроме, нужно немножко потанцевать с бубном, так как Google решили отключить стандартную функцию загрузки в headless режиме, и загружать файлы можно используя DevTools, это обсуждалось вот здесь: https://stackoverflow.com/questions/45219676/selenium-chrome-headless-download-file и там есть ссылка на баг-трекер.
Однако 2. Но это ещё не всё, в headless режиме не получиться использовать расширения, если вам к примеру нужен блокировщик рекламы, или переключатель proxy, или что угодно другое) увы, но пока headless
режим в Хроме близок к PhantomJS.
Третий вариант, это Firefox в режиме headless
. Но я к сожалению не могу вам сейчас показать как это делать, так как режим добавили в 56-ой (нынешней) версии для Windows, и я ещё не успел опробовать его. Надеюсь, что кто-нибудь на стаке уже попробовал FireFox и сможет дополнить мой ответ, или написать свой)