chromedriver не отображает html-страницы должным образом в selenium + pyvirtualdisplay на сервере ubuntu

Я пытаюсь отобразить HTML-страницы на сервере Ubuntu (AWS-EC2), используя селен и хромированный драйвер с pyvirtualdisplay. HTML-страницы отображаются не так, как на моем ПК с Windows. Прикрепляем скриншоты взятые с вебдрайвера.


Изображение, отображаемое на ПК с Windows

Это снимок HTML, обработанный ** Windows **

Изображение, отображаемое на сервере Ubuntu с помощью pyvirtualdisplay

Это снимок HTML, обработанный ** Ubuntu **


Базовая конфигурация, выполняемая при запуске моего кода Python (фрагменты кода Python) -

display_width=1366
display_height=768

Разрешение такое же, как у моего ПК с Windows.

UserAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0"

Это стандартный пользовательский агент.

def create_driver(executable_path,extension_path):
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--user-agent='+UserAgent)
    driver = webdriver.Chrome(executable_path=executable_path,     chrome_options=chrome_options)
    driver.set_window_size(display_width,display_height
    driver.delete_all_cookies()
    return driver

Этот код создает драйвер

display = Display(visible=0, size=(display_width, display_height))
display.start()
driver = create_driver(executable_path,extension_path)
input_html_file='SAMPLE'
driver.get('file://///var/tmp/' + input_html_file)

У меня есть сохраненный HTML-файл, который я открываю в драйвере - SAMPLE.

Это тот же HTML-код, который я открыл в Windows. Как вы видите на снимках экрана, текст «91 отзыв о продавце» переносится на новую строку. Поскольку я работаю над расчетом высоты этого блока и других областей, это влияет на мои результаты.

Код работает как шарм в Windows, давая правильный результат (высоту), но в Ubuntu, поскольку рендеринг сам по себе неверен, результат тоже.

Это то, что я пробовал до сих пор -

  1. Изменение разрешения дисплея. Не работает. При абсолютно любом размере дисплея скриншот выглядит одинаково.
  2. Смена шрифта, размера шрифта и т. Д. Не вышло. Каждый блок в HTML имеет разные CSS, так что это головная боль.
  3. Смена браузера. Не работало ни в Firefox, ни в Chrome

У меня заканчиваются идеи, было бы очень полезно, если бы кто-нибудь поделился своими идеями или опытом или каким-либо решением этой проблемы.

Я понимаю, что это может быть проблема с графическим драйвером, она есть в Windows, а на сервере Ubuntu - нет.

Пожалуйста помоги. Спасибо, в ожидании.

Изменить: описания изображений.


person rohitkulky    schedule 11.11.2014    source источник


Ответы (2)


Возможно, экземпляр AWS не отвечает на назначение ширины и высоты дисплея. Внесите некоторую отладку для фактического размера экрана. Как вы говорите, вероятно, это не то, чего вы ожидаете.

person beeman    schedule 27.11.2014
comment
Благодарим за ваше предложение. Я попытался сделать снимок экрана с помощью Xvfb, а не веб-драйвера. Фактически он запускает дисплей с правильными размерами. Но я смог найти решение этой проблемы. Пожалуйста, смотрите ниже мой ответ. - person rohitkulky; 20.12.2014

Я действительно мог найти решение этой проблемы.

Очевидно, Xvfb отображает текст, используя собственный набор шрифтов. Теперь веб-страницы имеют разные шрифты, и Ubuntu / Xvfb не обязательно будет иметь этот шрифт по умолчанию. Итак, весь текст отображается шрифтом Verdana.

Все, что я сделал, это добавил шрифты в каталог шрифтов и перестроил кеш шрифтов.

Эта запись помогла.

Будет полезно всем, кто сталкивается с этой проблемой.

person rohitkulky    schedule 20.12.2014