Эмуляция мобильных устройств в ChromeDriver

Если вы используете WebDriver с Chrome (через Chromedriver), вы можете эмулировать характеристики мобильного видового экрана. Аналогичным образом, вы можете автоматизировать тесты на рабочем столе, не используя надлежащую настройку Chrome для Android.

Как ты это делаешь?

Ответ 1

Возможность mobile_emulation была добавлена в ChromeDriver в 2.11

Полная документация: https://sites.google.com/a/chromium.org/chromedriver/mobile-emulation

Мои заметки ниже:

Создание драйвера на Python с возможностями возможностей mobile_emulation:

 driver = self.CreateDriver(
        mobile_emulation = {
            'deviceMetrics': {'width': 360, 'height': 640, 'pixelRatio': 3}})

В настоящее время вы можете эмулировать devicepixelratio, useragent, высоту и ширину видового экрана.

Возможные свойства для mobile_emulation dict:

  • deviceName: если используется, должно быть единственным свойством. Соответствует устройству, установленному в Chrome (например, 'Google Nexus 5').
  • deviceMetrics: dict, который может включать в себя ширину (int), height (int), pixelRatio (double), как показано выше.
  • userAgent: строка для подмены заголовка запроса и объекта навигатора.

Ответ 2

Опция mobileEmulation реализована в последней версии ChromeDriver (v 2.11). Используя WebDriverJs, вы должны добавить его как свойство объекта возможностей.

var webdriver = require('selenium-webdriver');
var capabilities = {
  browserName: 'chrome',
  chromeOptions: {
    mobileEmulation: {
      deviceName: 'Apple iPhone 5'
    }
  }
};
var
  driver = new webdriver
  .Builder()
  .withCapabilities(capabilities)
  .build();


driver.get('http://google.com');

var bool = false;
setTimeout(function () {
  bool = true;
}, 9000);
driver.wait(function() {
 return bool;
}, 10000);

driver.quit();

Ответ 3

Это в последней официальной сборке хромированной решетки (2.11).

Пример в java:

final DesiredCapabilities dc = DesiredCapabilities.chrome();
dc.setCapability(ChromeOptions.CAPABILITY, new ChromeOptions() {
{
    setExperimentalOption("mobileEmulation", new HashMap<String, Object>() {
            {
                put("deviceName", "Google Nexus 5");
            }
        });
    }
});

ChromeDriver driver = new ChromeDriver(dc);