1

我以下列方式使用 WebDriver 和 ChromeDriver 变量:

  • 第 1 行:

    WebDriver driver1 = new ChromeDriver();
    
  • 第 2 行:

    ChromeDriver driver2 = new ChromeDriver();
    

我的脚本仅限于在 Chrome 驱动程序中运行测试用例,因此我永远不会使用任何其他浏览器进行测试。所以,如果我在我的代码中选择 Line2 而不是 Line1,这是否会在任何功能或好处方面产生任何影响。(除了 WebDriver 接口的现有方法之外,寻找 ChromDriver 类可以提供的任何其他功能)。

4

2 回答 2

1

ChromeDriver 驱动程序 = 新的 ChromeDriver();

如果您使用将通过该实例创建ChromeDriver driver = new ChromeDriver();ChromeDriver实例,我们将只能调用和执行由ChromeDriver实现且仅受Chrome 浏览器支持的方法。要与其他浏览器配合使用,我们必须专门创建单个对象,如下所示:

  • FirefoxDriver driver = new FirefoxDriver();
  • InternetExplorerDriver driver = new InternetExplorerDriver();

WebDriver Interface

Selenium的角度来看,WebDriver 接口类似于MozillaChromeInternet ExplorerSafari等第三方浏览器供应商必须遵守和实施的协议。这将反过来帮助最终用户使用公开的 API 编写通用代码并在所有可用的情况下实现功能而无需任何更改。Browsers


为什么WebDriver driver = new ChromeDriver();

通过WebDriver driver = new ChromeDriver();我们创建WebDriver接口的实例并将其转换ChromeDriver Class。所有浏览器驱动程序,如FirefoxDriverChromeDriverInternetExplorerDriverPhantomJSDriverSafariDriver 等都实现了WebDriver接口(实际上RemoteWebDriver类实现了WebDriver 接口浏览器驱动程序扩展了 RemoteWebDriver)。所以如果我们使用WebDriver driver,那么我们可以使用已经初始化的驱动程序(作为公共对象变量)用于我们想要自动化的所有浏览器,例如 Mozilla、Chrome、InternetExplorer、PhantomJS、Safari。

WebDriver driver = new FirefoxDriver();
driver = new ChromeDriver();
driver = new FirefoxDriver();
driver = new SafariDriver();

这个问题

现在,正如您提到的,will never use any other browser for my testing purpose您可以使用ChromDriver类。但在这一点上,值得一提的是,ChromeDriver 是一个独立的服务器,它为 Chromium 实现了WebDriver 的有线协议。Chromium 团队正在实施和转向W3C 标准

因此,展望未来,ChromeDriverGeckoDriverIEDriverServerOperaDriverSafariDriver每个变体都将仅符合W3C 标准

您可以在 selenium 中 ChromeDriver 和 WebDriver 的区别是什么中找到相关讨论?

于 2018-12-12T13:23:20.547 回答
0

IWebDriver是一个Interface并且ChromeDriver一个class实现。此外,只能用于创建浏览器的实例,而可以表示任何受支持的浏览器:(Firefox、IE、Edge...)。 IWebDriverChromeDriverChromeIWebDriver

特别是在你的情况下,我会使用: ChromeDriver driver2 = new ChromeDriver();仅仅是因为,正如你所说,你只会Chrome在你的测试中使用。

这里有一些很好的答案。

于 2018-12-11T16:06:35.473 回答