WebdriverIO vs Protractor 架構(1)
兩個都是目前非常當紅的前端測試框架,雖然他們都是透過呼叫 selenium server 去幫他們做一些事,但實際上從底層就有很大的不同。
你可以從 Protractor 的 package.json 中,可以找到 selenium-webdriver 的身影,所以基本上 Protractor 是針對 selenium-webdriver 做了一層更友善的界面。
圖一
而 WebdriverIO 你則無法從 package.json 找到相同的模組,原因是 WebdriverIO 的實作方式,並不直接長在 selenium-webdriver 之上,而是直接呼叫 selenium 的 JsonWireProtocol RESTful API。
Protractor 跟 selenium-webdriver API 的使用方式非常雷同。
1 | var dog = driver.findElement(By.id('dog_id')).click(); |
1 | var dog = browser.findElement(by.id('dog_id')); |
但 WebdriverIO API 則更友善一點,非常肯定作者在這方面的努力。
1 | var dog = client.element('#dog_id'); |