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

时间:2019-05-15 15:14:11

标签: selenium selenium-webdriver webdriver remotewebdriver

在不使用 webdriver 的情况下,我发现.Include(x => x.Balance) .ThenInclude(x => x.MCTSIB) .Include(x => x.Balance) .ThenInclude(x => x.Balance.C1) 方法的返回类型为driver.FindElement

使用Webdriver时,我发现WebElement-Remotewebdriver方法的返回类型为FindElement

WebElement-Webdriver

如果Chromedriver正在实现Webdriver界面,为什么我看到ChromeDriver driver = new ChromeDriver(); driver.get("https://ui.freecrm.com/"); driver.findElement(By.xpath("//div[@class='ui fluid large blue submit button']")); 的返回类型为findElement而不是Webelement-RemoteWebdriver

我知道Webelement-Webdriver类实现了RemoteWebdriver接口。什么时候使用Webdriver?为什么?

1 个答案:

答案 0 :(得分:1)

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

因此,当我们谈论webdriver接口时,有两个实现该接口的类

  • EventFiringWebDriver。
  • RemoteWebDriver。

有6个类扩展了RemoteWebDriver类,例如ChromeDriverFFIE等。

看看官方文件怎么说:

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

有关更多信息,请参见:official Link

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

Ans: Chromedriver 是一个公共类,未实现 Webdriver 界面。 并扩展了RemoteWebDriver受保护的类。