2016-10-03 108 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接口中的方法在最後使用的不同瀏覽器實現類中實現。所以最終,這兩個聲明都讓我使用了實現類中的方法。如果我的理解錯誤,請糾正我。 –

相關問題