2016-03-14 104 views
-1

我剛剛開始使用Selenium並已遇到問題。無法實例化WebDriver類型

很簡單,但我完全缺少它,只是想創建的webdriver的實例,但得到的錯誤不能實例...

enter image description here

我把所有的jar文件,其中上午我錯了?

+1

聲明我猜你應該指定要使用的瀏覽器,比如'webdriver的驅動程序=新FirefoxDriver();' – Andersson

+0

我不該」我不得不應該​​嗎?但我會給它去一個 – dhali

+0

我不'''WebDriver'''抽象類嗎?您是否嘗試過創建特定實現的實例? – Gavin

回答

1

它給錯誤,因爲WebDriver是一個接口不是類。所以創建webdriver的對象如下: -

WebDriver driver = new FirefoxDriver(); 

在上面的語句中,WebDriver是一個接口。一個接口包含已定義但未實現的空方法。任何人都可以實現這些方法,只要方法類型和簽名不受侵犯。因此,接口也稱爲契約,因爲您可以隨意使用接口,但無法改變它的定義方式。而且,由於它有空方法,你實際上不需要實例化它,所以你不能實例化它。

FirefoxDriver是一個專門爲Firefox瀏覽器編寫的類。它具有實現的方法並可以實例化。它可以在Firefox瀏覽器上執行界面WebDriver中定義的所有功能(或方法)。

所以在上面的聲明中,我們實際上是告訴FirefoxDriver類,「嘿,你可以在Firefox瀏覽器上自動化你想要的各種方法,但是你需要堅持WebDriver中定義的協議」。所以我們聲明一個類型爲WebDriver的引用變量,然後用它來實例化FirefoxDriver,這意味着對象(驅動程序)是WebDriver類型,但指向內存分配給FirefoxDriver中的所有數據和方法(並且,如上所述, FirefoxDriver類已經在WebDriver中實現了方法的版本)。所以一切都很好:)

通過使用這種技術,我們使測試者可以輕鬆使用任何他或她喜歡的瀏覽器。例如,要在IE的驅動程序自動,一會就來簡單寫這樣

WebDriver driver = new IEDriver();