2014-09-27 105 views
3

我們的團隊正在計劃開發一個框架來自動化手動測試用例。但是我們被困在選擇javascript和java之間。通過一些搜索,我們發現Webdriverjs是用於JavaScript的硒綁定。現在,主要的障礙是我們是否應該使用webdriverjs或帶有selenium-webdrier的java去使用javascript?javascript與webdriverjs或與硒webdriver的Java?

我們已經通過selenium-webdriver瞭解了java,但是隨着我們正在向前推進新框架,我們只是想打開簡單,快速和更可靠的選項。

請將javascript與webdriverjs(我們需要學習javascript這一點)或java與selenium-webdriver建議?

回答

0

我會親自選擇selenium-webdriver軟件包並根據需要實例化不同的驅動程序。然後你不會被鎖定到只有js的驅動程序。

我們的團隊利用硒遠程/網格進行並行化,但在很多情況下,我們需要一個js驅動程序。

實例在其:

WebDriver wd = new WebDriver() 
RemoteWebDriver rwd = new RemoteWebDriver() 
ChromeDriver cd = new ChromeDriver() // for chrome browser 
JavaScriptDriver jsd = ..... 
3

我們碰到了,你現在看到了同樣的挑戰。 堆棧上有很多硒工程師在Java堆棧上,但在Node.js和selenium-webdriver堆棧上沒有太多。

大多數較新的現代測試框架都是在Node.js中完成的,因爲前端和後端均使用NodeJS完成,並將繼續這種趨勢。我會問的問題是開發團隊是使用Java(例如Tomcat)還是使用Node.js來開發他們的產品。如果他們正在使用Node.js那麼最好使用相同語言編寫測試框架。

這是爲了便於開發和自動化團隊,定位器和等之間

  • 協作..
  • 減少摩擦開發者編寫Selenium測試

有一個很Marcel Erz在我們的南灣硒會議上做了很好的介紹。我強烈建議你在做出決定之前通過它。

的Java與JavaScript的(對UI測試)

  • 通過前端工程師
  • 不熟悉Java和它的生態系統
  • 上下文切換
  • 不太可能編寫的大多數測試接受測試

http://www.marcelerz.com/blog/talk-nodejs-based-selenium-testing-south-bay-selenium-meetup

現在如果你使用Javascript,主要的挑戰是當然的異步性。大多數自動化工程師用於同步PythonJava中的模式。習慣JavaScript的異步行爲需要一些時間。但最終的結果是值得的。

我們的框架主要是用Node.js編寫的,我們使用Mocha作爲我們的線束和測試運行器。推薦的斷言庫是Chai,但如果您需要特定需求,則可以使用其他庫。

我們選擇的硒庫是WebDriverJs(區分大小寫),也就是npm上的selenium-webdriver,這是官方的JavaScript端口。我們與selenium-webdriver一起進行的主要原因之一是代碼可讀性和能夠實現開箱即用的類似同步的語法到讓Java測試工程師記住。這可以通過利用內置的Promise Manager控制流和Mocha Test Wrapper來實現,該自動處理所有對promise管理器的調用,使代碼非常同步。

https://code.google.com/p/selenium/wiki/WebDriverJs#Writing_Tests

然後,它添加在自己的框架和構建頁面對象的問題。 Javascript中的頁面對象是一個全新的野獸,你將不得不掌握原型,以及如何模擬Java的繼承。

您還應該在npm中使用selenium-standalone作爲本地和遠程執行的硒的唯一通信點,而不是在測試中創建Driver實例(本地/遠程)。這是爲了使框架具有相同的界面並使事物保持一致。您不想跟蹤多個本地驅動程序可執行文件並更新它們。一個包裹照顧一切。

如果你已經閱讀到這裏,並且你幾乎可以確定你將使用Node.js路線而不是Java。以下是我們框架的一個非常簡化的版本,可以幫助您開始。它具有上述所有的實現。任何拉請求也歡迎!

https://github.com/mekdev/mocha-selenium-pageobject

+0

你應該知道這是一個自動過程,建議編輯隊列;你不需要問我爲你看。無論如何,像維基百科一樣思考Stack Overflow,而不是像論壇;我們的目標是儘可能地提供最好的問題和答案,所以諸如「感謝」或「p.s.你有一個錯字」等額外的東西不應該在你的答案中;相反,請自己編輯問題。當你有2000名代表時,你將能夠自己進行編輯而無需同行評審。 – durron597 2015-09-04 17:50:57

0

一點點搜索後,發現是JavaScript的硒需要罐運行。這意味着javascript selenium依賴於java硒,那麼顯然java硒會更快。

+0

呵呵?這個邏輯是如何工作的? :) – 2017-04-06 22:22:34

+0

JavaScript的硒庫需要調用Java庫來運行測試,或將JavaScript的硒轉換爲Java(我不這麼認爲)。這是否意味着java運行速度比JavaScript快?那是我的猜測。 – sh977218 2017-04-07 15:57:08

+1

不,java服務器單獨運行。然後,您在單獨的進程X中運行的測試將對Java服務器進行HTTP調用。 X的運行語言無關緊要 - 它不會影響硒服務器的速度。換句話說,如果你想讓用不同語言編寫的不同進程相互交談,可以使用TCP,IPC或HTTP進行交談。 – 2017-04-07 16:18:03