selenium 4 0新特性及新旧api对比
众所周知,java 语言版本的 selenium 一般被认为是最正宗的 selenium 版本,今天我们以 java 语言为例,来看看 selenium 4.0 的各种新特性以及新旧 api 的对比。
Capabilities
如果你需要对浏览器进行一些全局设置,那么使用 Capabilities 是唯一的选择。说实话,旧的 Capabilities 有点不太符合直觉,具体用法如下。
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("platform", "Mac OS X");
capabilities.setCapability("version", "94");
driver = new RemoteWebDriver(capabilities);
在新版本中,我们直接设置 options 就可以了,语义上显得更为自然。
ChromeOptions options = new ChromeOptions();
options.setBrowserVersion("94");
options.setPlatformName("Mac OS X");
driver = new ChromeDriver(options);
Waits
在之前的版本里,我们实例化各种 wait 对象时候需要传入 2 个参数:time 以及 type of time,在新版本里我们只需要使用 Duration 类就可以了。
这是之前的做法
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS);
新的方式
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
driver.manage().timeouts().pageLoadTimeout(Duration.ofMinutes(3));
driver.manage().timeouts().setScriptTimeout(Duration.ofHours(1));
当然,现在支持各式各样的 Duration 了,需要注意的是这里接受的是 long 型的参数。
Duration.ofNanos(long nanos);
Duration.ofMillis(long millis);
Duration.ofSeconds(long seconds);
Duration.ofMinutes(long minutes);
Duration.ofHours(long hours);
Duration.ofDays(long days);
当然,我们还可以直接设置浏览器的各种全局等待时间,代码上看观感好了不少。
ChromeOptions options = new ChromeOptions();
options.setImplicitWaitTimeout(Duration.ofSeconds(10));
options.setScriptTimeout(Duration.ofSeconds(10));
options.setPageLoadTimeout(Duration.ofSeconds(10));
相对定位器
一些哲学流派告诉我们,世界是变化的,相对的,没有绝对的静,也没有绝对的动,物体总是相对着其他物体进行着运动。