Selenium: PhantomJS: Сайт отображается как мобильный сайт - PullRequest
0 голосов
/ 27 сентября 2018

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

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

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

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

1 Ответ

0 голосов
/ 27 сентября 2018

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

Asсогласно комментарию в обсуждении Визуализация без учета размера области просмотра @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);
    
...