Selenide中两种获取WebDriver实例方式的差异解析
Selenide中两种获取WebDriver实例方式的区别
核心差异
Selenide.webdriver()
该方法返回的是SelenideDriver的webdriver()执行结果,本质是Selenide封装的WebDriverWrapper对象。这个包装类内部持有原生WebDriver实例,同时集成了Selenide的自动等待、失败截图、操作重试等核心特性。若要获取原生WebDriver,可通过它的getWebDriver()方法,但直接使用wrapper能保留Selenide的所有增强能力。WebDriverRunner.getWebDriver()
此方法直接返回原生WebDriver实例,完全绕过Selenide的封装逻辑。使用这个实例调用原生WebDriver API时,Selenide的自动等待、异常处理等机制不会生效,相当于脱离了Selenide的管控。
适用场景
- 若需要在操作浏览器时保留Selenide的特性,优先选择
Selenide.webdriver();临时需要调用原生API时,可通过Selenide.webdriver().getWebDriver()获取原生实例,操作完成后仍回归Selenide API即可。 - 若要执行原生WebDriver的底层操作,或集成依赖原生WebDriver的第三方工具,可直接使用
WebDriverRunner.getWebDriver()。
底层关联
Selenide.webdriver()最终也是从WebDriverRunner中获取驱动实例,只是多了一层Selenide的封装增强,二者的原生驱动实例是同一个。
内容的提问来源于stack exchange,提问作者Artsiom
相关产品推荐
相关产品推荐

