java - 使用 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));
有人可以帮忙吗?谢谢
解决方案
您需要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 上都失败
推荐阅读
- javascript - 如何在 Javascript 中使用 Web Audio API 更改 CSS 参数?
- postgresql - 在处理的 PostgresException 下 TransactionScope 下意外的 Postgres 连接中止
- postgresql - 无法从表中选择变量(Postgresql)
- ruby-on-rails - 提交到数据库后将String转换为Hash
- react-scripts - 全局设置反应脚本
- r - 递归估计的收益波动率
- python-3.x - 我是编码新手,如果我的问题很愚蠢,请原谅我,但我可以知道如何找到每个学生的考试总分吗?
- list - 在初始化程序中只能访问静态成员,错误
- javascript - 具有同一类的多个实例的类构造函数依赖关系
- javascript - 更改网站中的 url 链接语言