在ChromeDriver中模拟移动设备

时间:2014-08-19 22:41:19

标签: mobile webdriver selenium-chromedriver

如果您在Chrome(通过Chromedriver)中使用WebDriver,则可能需要模拟移动视口特性。同样,您可能希望在桌面上自动执行测试,而无需在Android设置上使用正确的Chrome。

你是怎么做到的?

3 个答案:

答案 0 :(得分:14)

{2.1}中的mobile_emulation功能已添加到ChromeDriver

完整文档:https://sites.google.com/a/chromium.org/chromedriver/mobile-emulation

我的笔记如下:

使用mobile_emulation功能选项在Python中创建驱动程序:

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

目前,您可以模拟devicepixelratio,useragent,视口高度和宽度。

Possible properties用于mobile_emulation dict:

  • deviceName:如果使用,必须是唯一的属性。匹配Chrome中的device preset(例如'Google Nexus 5')。
  • deviceMetrics:一个可以包含width(int),height(int),pixelRatio(double)的字典,如上所示。
  • userAgent:一个欺骗请求标头和导航器对象的字符串。

答案 1 :(得分:7)

这是最新的官方chromedriver版本(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);

答案 2 :(得分:6)

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();