Selenium 4调用Emulation.setDeviceMetricsOverride参数类型不匹配报错问题
问题原因
该报错为参数类型不匹配导致:Selenium 4 封装的CDP Emulation.setDeviceMetricsOverride 方法要求 前4个参数为包装类类型:Integer、Integer、Number、Boolean,你当前传入的是基础数据类型 int、int、int、boolean。虽然Java支持自动装箱,但在多参数搭配Optional泛型的场景下,编译器无法自动完成类型匹配,就会触发参数不适用的错误。
部分场景下如果错误导入第三方库(如Guava)的Optional类,和方法要求的java.util.Optional不兼容,也会触发同类报错。
解决方案
- 将前4个基础类型参数显式转换为对应包装类即可,修改后的代码示例如下:
devTools.send(Emulation.setDeviceMetricsOverride( Integer.valueOf(600), Integer.valueOf(1000), Integer.valueOf(50), // 任意Number子类都可,也可传入Double.valueOf(50) Boolean.TRUE, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty() ));
- 检查当前类的
Optional导入语句,确保导入的是JDK自带的java.util.Optional,而非其他第三方库的同名类。
内容的提问来源于stack exchange,提问作者MounaG
相关产品推荐
相关产品推荐

