2016-10-03 149 views
1

这是一个常见问题,但我不清楚在Internet上找到的答案或StackOverflow。对象实例 - Selenium Web驱动程序

当我们实例化硒WebDriver对象(比如硒的webdriver和Java),我们一般写(作为一个正常的做法),

WebDriver driver = new FirefoxDriver(); 

或者使用WebDriver接口的任何其他执行器(Chrome,IE, Safari,AndroidDriver等)。

为什么我们不使用类似下面

FirefoxDriver fx = new FirefoxDriver(); 

webdriver的是一个接口,只能由特定的浏览器实现类实现的WebDriver的方法将是访问。 FireFoxDriver这些不在WebDriver接口中的方法将不能被引用访问。

如果我错了,请纠正我。

回答

1

您必须使用接口WebDriver而不是实现。这是一个名为通用技术:

代码/编程接口

所以如果将来你需要切换到不同的驱动程序,比方说开关从ChromeDriverFirefoxDriver您的代码将保持不变。

+0

感谢您的回答,我猜它是面向对象原则之一。在google上搜索更多的例子。有更多的清晰度。 –

2

您总是需要致电WebDriver,因为它包含测试所需的所有方法。

这里是例如:

受保护的静态驱动的webdriver =新ChromeDriver();

受保护的静态驱动的webdriver =新FirefoxDriver();

+0

对不起,但我的疑问仍不清楚。我们创建一个对WebDriver和Object实现类的引用。使用WebDriver引用,我们最终使用实现类的方法(感谢多态)。 WebDriver接口中的方法在最后使用的不同浏览器实现类中实现。所以最终,这两个声明都让我使用了实现类中的方法。如果我的理解错误,请纠正我。 –

相关问题