#python #selenium #google-chrome #pyvirtualdisplay
Вопрос:
Я написал скребок на python, который использует селен, хром и дополнительное расширение. Скребок работает локально с видимым дисплеем, но не тогда, когда я пытаюсь запустить его в headless
режиме.
На очищенном веб-сайте есть кнопка, которая автоматически открывает новое окно (я не могу получить к нему доступ по URL-адресу, чтобы открыть его в новой вкладке).
click_button() # the button opens a new window with a confirmation button
driver.switch_to.window(driver.window_handles[1]) # switching to the confirmation window
click_confirm() # when confirm is clicked the window closes automatically
driver.switch_to.window(driver.window_handles[0]) # switching back to original window
Chrome не работает в безголовом режиме, когда у него установлены расширения, поэтому я вынужден использовать pyvirtualdisplay.
Проблема в том, что приложение Display
pyvirtualdisplay
открывает только одно окно браузера, поэтому окно подтверждения никогда не появляется. Как я могу разрешить pyvirtualdisplay открывать новые окна и чередовать их?
Ответ №1:
Оказалось, что pyvirtualdisplay действительно открыл окно, однако его размер был 1 на 1 пиксель. По-видимому, настройка размера окна webdriver следующим образом неправильно работает с pyvirtualdisplay:
options = Options()
options.add_argument('--window-size="1980,1080"')
driver = webdriver.Chrome(executable_path=chrome_driver_path, options=options)
Настройка его, как показано ниже, решила мою проблему, и окно было нормального размера:
driver = webdriver.Chrome(executable_path=chrome_driver_path)
driver.set_window_size(1980,1080)