有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么我需要使用WebDriver而不是ChromeDriver

我正在那里做一个项目,我们只需要在chrome浏览器上运行测试。我们不需要任何其他浏览器

而不是

WebDriver driver = new ChromeDriver();

我能用吗

ChromeDriver driver = new ChromeDriver();

使用ChromeDriver而不是WebDriver的缺点是什么


共 (3) 个答案

  1. # 1 楼答案

    https://www.geeksforgeeks.org/upcasting-vs-downcasting-in-java/

    这叫做向上投射

    正如在另一个答案中提到的

    ChromeDriver class extends RemoteWebDriver class. RemoteWebDriver class implements WebDriver interface

    因此,如果您将标识符声明为Chromedriver类型:

    ChromeDriver driver = new ChromeDriver()
    

    然后,将只公开ChromeDriver类中定义的方法。因此,我们将其升级到最高级别,即WebDriver接口,以便WebDriver接口中的所有方法,以及RemoteWebDriver中重写的所有方法,以及ChromeDriver类在对象实例中可用

    这有助于我们使用相同的变量初始化不同类型的驱动程序,因为只使用由web驱动程序类实现/定义的方法

    WebDriver driver = new ChromeDriver()
    WebDriver driver = new FireFoxDriver()
    

    等等

    更多信息请访问:http://makeseleniumeasy.com/2018/02/08/why-do-we-up-cast-browser-driver-class-object-to-webdriver/

  2. # 2 楼答案

    使用ChromeDriver driver = new ChromeDriver();的唯一缺点是,将来您将无法在任何其他浏览器上使用代码
    所以,虽然目前你只使用Chrome浏览器,但这并没有什么区别,但对于将来的使用来说,这是不必要的限制,因为使用ChromeDriver driver = new ChromeDriver();而不是WebDriver driver = new ChromeDriver();也不会给你带来任何好处

  3. # 3 楼答案

    是的,你可以用

    ChromeDriver类扩展了RemoteWebDriverRemoteWebDriver class implements WebDriver interface

    看看chromedriver的官方信息

    A WebDriver implementation that controls a Chrome browser running on the local machine.

    有7个以上的类从RemoteWebDriver扩展而来,所以如果您这样声明驱动程序:

    WebDriver driver = new ChromeDriver();
    

    这意味着驱动程序的类型是WebDriver类型,它不是特定的,所以您可以更改浏览器或实现cross browser automation testing

    但如果你这么做了

    ChromeDriver driver = new ChromeDriver();
    

    您无法实现跨浏览器测试