如果您在Chrome(通过Chromedriver)中使用WebDriver,则可能需要模拟移动视口特性。同样,您可能希望在桌面上自动执行测试,而无需在Android设置上使用正确的Chrome。
你是怎么做到的?
答案 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();