2014-02-06 76 views
8

我是一名使用selenium-webdriver的體驗專家。我正在探索更多關於如何測試javascript應用程序的選項,並且發現了webdriverJs。不幸的是,我不明白這兩個(2)之間有什麼區別。selenium-webdriver與webdriverjs有何區別(以及何時使用)?

有人可以解釋什麼時候使用硒webdriver通過webdriverJs和好處?

謝謝!

+0

一般注意事項:WebdriverJS現在稱爲WebdriverIO,應該使用'npm install webdriverio'安裝。您仍然可以'npm install webdriverjs',但它已被棄用,並且不再維護NPM項目。 – user2859458

回答

5

WebDriverJS和selenium-webdriver都是Webdriver API的JavaScript綁定。

唯一的區別是selenium-webdriver是由Selenium團隊維護的官方實現,而WebDriverJS則不是。 WebDriverJS由第三方維護。

+0

是的,我明白這一點。就其使用的「測試網絡應用程序」而言,它使用什麼真的很重要? – Major

+0

根本沒有......儘管我可能會注意到Selenium最初是一個Java項目,所以我認爲可以安全地假設Java是最經過測試和使用的。我建議這樣做,但這完全取決於你的系統需要什麼,什麼是好的。在我工作的地方,這是一家Java商店。如果你主要使用Ruby,不要偏離太遠。使用Ruby api。如果你的應用程序是節點js,我建議webdriver js。全取決於你。 – sircapsalot

+0

我看到謝謝。所以基本上,你在說什麼webdriver和webdriverJs都做同樣的工作?這只是一個偏好什麼語言來編寫測試的問題。 – Major

26

他們做基本相同的事情。主要區別在於你如何編寫測試。 selenium-webdriver是承諾和回調的組合--WebdriverIO只能與承諾一起工作,可以作爲獨立或與內部testrunner一起使用。還有一個名爲wd.js的庫。以下是所有三種口味的例子。

硒 - webdriverjs:

driver.get('http://www.google.com'); 
driver.findElement(webdriver.By.id('q')).sendKeys('webdriver'); 
driver.findElement(webdriver.By.id('btnG')).click(); 

WD.js

browser 
    .get("http://www.google.com") 
    .elementById('q') 
    .sendKeys('webdriver') 
    .elementById('btnG') 
    .click() 

WebdriverIO

browser 
    .url('http://google.com') 
    .setValue('#q','webdriver') 
    .click('#btnG') 

WebdriverIOs概念是包裝在方便的動作命令的所有協議命令,但它也具有幾乎所有的協議命令都實現了,所以你可以用標準的JSON做同樣的事情Wire協議命令。

browser 
    .url('http://google.com') 
    .element('#q').then(function(res) { 
     return browser.elementIdValue(res.value.ELEMENT, 'webdriver'); 
    }) 
    .element('#btnG').then(function(res) { 
     return browser.elementIdClick(res.value.ELEMENT); 
    }); 
+0

感謝您的反饋意見。您認爲,爲什麼以及何時使用webdriverJs? – Major

+0

我使用WebdriverJS進行所有硒測試。它超級簡單,高度可擴展。但作爲這個圖書館的維護者,我可能對此有不同的看法。 – ChristianB

相關問題