Selenium: PhantomJS: Сайт отображается как мобильный сайт

Я пытаюсь запустить свои сценарии автоматизации селена, которые находятся в Java, используя браузер без заголовка PhantomJS. Скрипт отлично работает в IE11 в режиме полной загрузки.

Когда я запускаю сценарий с помощью PhantomJS, веб-сайт отображается как мобильный сайт, и элемент становится невидимым, а сценарий завершается ошибкой. Пожалуйста, предложите, как я могу преодолеть эту ситуацию.

Я использую приведенный ниже код для создания экземпляра PhantomJS

if (browserType.equalsIgnoreCase("PhantomJS")) {                    
            WebDriverManager.phantomjs().setup();
            driver = new PhantomJSDriver();
            driver.manage().window().maximize();            
}   

1 ответ

Когда PhantomJS запускается, viewportSize по умолчанию 400 px wideа также300 px high,

Согласно комментарию в обсуждении, Render не соблюдает размер окна просмотра @ariya упоминает:

Размер области просмотра в PhantomJS имеет то же значение, что и область просмотра в WebKit. Веб-страница здесь больше похожа на длинный лист бумаги, где контент захватывается. Браузер, однако, добавляет концепцию окна просмотра, который можно прокручивать, что делает поведение другим.


viewportSize

Согласно документации viewportSize для PhantomJS:

viewportSize {object}

This property sets the size of the viewport for the layout process. It is useful to set the preferred initial size before loading the page, e.g. to choose between 'landscape' vs 'portrait'.

Because PhantomJS is headless (nothing is shown), viewportSize effectively simulates the size of the window like in a traditional browser.

Пример:

var webPage = require('webpage');
var page = webPage.create();

page.viewportSize = {
  width: 480,
  height: 800
};

Решение

Существует два возможных решения:

  • Настройте экземпляр WebDriver с необходимыми window size:

    driver.set_window_size(1024,68)
    
  • Изменить viewportSize следующее:

    var phantomJSDriverService = PhantomJSDriverService.CreateDefaultService(phantomJSDirectory);
    phantomJSDriverService.phantomjs.page.viewportSize = "{ width: 1024, height: 768 }";
    var driver = new PhantomJSDriver(phantomJSDriverService);
    
Другие вопросы по тегам