运行 使用 Webdriver 和不使用 Webdriver 的 Selenium 测试之间的区别

Difference between running Selenium test with using Webdriver and without using webdriver

在不使用 webdriver 的情况下,我观​​察到 driver.FindElement 方法的 return 类型为 WebElement-Remotewebdriver

通过使用 Webdriver,我观察到 FindElement 方法的 return 类型为 WebElement-Webdriver

ChromeDriver driver = new ChromeDriver();

driver.get("https://ui.freecrm.com/");

driver.findElement(By.xpath("//div[@class='ui fluid large blue submit button']"));

如果 Chromedriver 正在实现 Webdriver 接口,为什么我看到 findElement 的 return 类型是 Webelement-RemoteWebdriver 而不是 Webelement-Webdriver

而且我知道 RemoteWebdriver class 实现了 Webdriver 接口。何时使用 remotewebdriver,为什么?

SearchContext是由webdriverwebelement接口扩展的根接口。

所以当我们谈论 webdriver 接口时,有两个 class 实现了这个接口

  • EventFiringWebDriver。
  • RemoteWebDriver.

有 6 个 class 扩展了 RemoteWebDriver class,例如 ChromeDriverFFIE

看看官方文档是怎么说的:

您可以WebDriver远程使用与本地相同的方式。主要区别在于远程 WebDriver 需要 配置 以便它可以 运行 在 上进行测试单独的机器。远程 WebDriver 由两部分组成:客户端和服务器。客户端是您的 WebDriver 测试,服务器只是一个 Java servlet,可以托管在任何现代 JEE 应用服务器。

更多可以参考:official Link

问。如果 Chromedriver 正在实现 Webdriver 接口,为什么我看到 return 类型的 findElement 是 Webelement-RemoteWebdriver 而不是 Webelement-Webdriver?

回答:Chromedriver 是一个 public class 没有实现 Webdriver 接口。 并扩展受保护的 RemoteWebDriver class.