首页 > 解决方案 > 使用 Selenium Java 在窗口屏幕中拟合对象

问题描述

我正在尝试将所有对象都放在窗口(Chrome 浏览器)中。当我这样做时手动(我使用的尺寸是 1024X786 使用切换栏,但是当我使用相同的尺寸自动执行它时,它的显示与手动显示的不同。

以下是代码:

driver = new ChromeDriver();
Map<String, Object> deviceMetrics = new HashMap<String, Object>();
deviceMetrics.put("width", 768);
deviceMetrics.put("height", 1024);
Map<String, Object> mobileEmulation = new HashMap<String, Object>();
mobileEmulation.put("deviceMetrics", deviceMetrics);
mobileEmulation.put("userAgent", "Mobile S");
Map<String, Object> chromeOptions = new HashMap<String, Object>();
chromeOptions.put("mobileEmulation", mobileEmulation);
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
System.out.println("Driver is now ChromeDriver");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

页脚正在迷失其中。我得到的是: 在此处输入图像描述

我想得到的是: 在此处输入图像描述

我使用的另一个代码是:

driver.manage().window().setSize(new Dimension(1024, 786));

有人可以帮忙吗?谢谢

标签: javaseleniumgoogle-chromeselenium-chromedrivermobileemulation

解决方案


您需要mobileEmulation在 Class 的实例中传递相关配置ChromeOptions,如下所示:

Map<String, Object> deviceMetrics = new HashMap<>();
deviceMetrics.put("width", 768);
deviceMetrics.put("height", 1024);

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

注意:使用移动仿真在桌面上测试移动网站可能很有用,但测试人员应注意存在许多细微差别,例如:

  • 完全不同的GPU,可能会导致较大的性能变化;
  • 不模拟移动 UI(特别是隐藏 url 栏会影响页面高度);
  • 不支持消歧弹出窗口(您可以在其中选择几个触摸目标之一);
  • 许多硬件 API(例如,orientationchange 事件)不可用。

参考

移动仿真

tl; 博士

移动仿真受一个已知问题的影响 来自 MobileEmulationCapabilityTest 类的测试 testClickElement 在所有平台的 Chromium 上都失败


推荐阅读