随着Chrome浏览器的最新更新,我们针对移动浏览器的UI测试在适用于Windows的Chrome浏览器上失败了。
我一直在使用这个: driver.manage()。window()。setSize(dimension);
它们失败了,因为UI元素与最小Chrome浏览器宽度上的预期元素不匹配。
但是该网站只能在chrome浏览器上的实际移动设备上正常加载。
硒中是否有替代方法可以替代chrome浏览器设置的默认最小浏览器宽度。
driver.manage()。window()。setSize(dimension);
我正在尝试将浏览器宽度设置为385,但在Windows Chrome浏览器上,它会自动重置为540,这会导致验证失败
答案 0 :(得分:0)
一段时间以前,我曾使用Selenium / ChromeDriver和Python。希望这仍然适用。
我认为您不仅需要解决错误的解决方案,还需要改变管理 mobile 测试的方式。我鼓励您检查我的经验是否也适用于您的情况。
就我而言,设置浏览器窗口分辨率在桌面模式下与Chrome搭配使用效果很好,但是我在Chrome移动模式下遇到问题。
在移动模式下,我无法使用setSize()
设置分辨率,实际上它已被忽略,并且浏览器窗口大小始终是“模拟”屏幕的屏幕分辨率 手机。
考虑一下,这很有意义。
因此,我鼓励您再次检查/验证您的硒测试(在移动模式下)正在有效地更改浏览器窗口大小-即,我担心您一直在做网页以相同的分辨率渲染...(模拟)手机的屏幕分辨率。
因此,在我的代码中,我仅将setSize()
代码用于桌面模式的操作/测试。
对于Chrome移动模式,我的代码通过将手机屏幕分辨率更改为(<,y)为每个浏览器窗口分辨率(x,y)创建一个新的 ChromeDriver 实例。 x,y);您可以使用ChromeDriver实验性选项来完成此操作,代码如下。
屏幕分辨率x,y的Java代码= 800,1280:
Map<String, Object> deviceMetrics = new HashMap<>();
deviceMetrics.put("width", 800);
deviceMetrics.put("height", 1280);
deviceMetrics.put("pixelRatio", 1.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 chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation);
WebDriver driver = new ChromeDriver(chromeOptions);
您的代码应停止驱动程序实例,并为每个经过测试的分辨率重新创建一个新实例。
我发现没有办法在相同的实例上进行在线:-)
请分享您的发现,
致谢
PS :我一直使用pixelRatio = 1.0,我没有提醒确切的含义,但是我推断这对于现代设备来说是最合理的值。
P.s.2 :提供的代码是我的Python代码的“映射”,未经测试