在Selenium中Chrome浏览器的移动视图和桌面视图之间切换



我有一个要求,我想在移动视图和桌面视图中测试系统,所以它要求我的代码能够在中途的视图之间切换,比如首先在移动视图中测试TC1,然后在桌面视图中检测TC1,再在移动视图中检测TC2,在桌面视图检测TC2等等。当我们启动浏览器时,它会以正常的桌面视图打开,我使用以下代码将其转换为移动视图-

deviceMetrics.put("width", 414);
deviceMetrics.put("height", 1400);
deviceMetrics.put("pixelRatio", 3.0);
Map<String, Object> mobileEmulation = new HashMap<>();
mobileEmulation.put("deviceMetrics", deviceMetrics);
mobileEmulation.put("userAgent", "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19");
chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation);

有没有办法在同一会话中将浏览器转换为桌面视图?

由于在同一测试用例中不需要在桌面和移动模式之间切换,解决问题的最简单方法是在测试中传递一些参数。我猜你用的是TestNG还是jUnit?只需传递布尔参数isMobileMode
在这种情况下,您可以简单地进行

if(isMobileMode){
chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation);
}

而所有的其余线路将不会改变。

我也面临着这种情况,我的应用程序在本地系统中运行良好,但当我将其运行到Azure Devops(自托管代理(中时,它以某种不同的模式运行(可能是平板电脑/ipad迷你模式(。我试过

Map devices = new HashMap()
{{put("width", 1366);
put("height", 768);
put("mobile", false);
put("deviceScaleFactor", 100);
}};driver.executeCdpCommand("Emulation.setDeviceMetricsOverride", devices );

但得到了同样的回应。

最新更新