4
A
回答
3
使用Selenium 2可以獲得一定的里程數。我將Selenium 2 WebDriver與Selenium DSL的變體here結合使用。
最初,我改變了DSL以便使它從REPL(參見下文)運行起來更容易一些。然而,像這樣構建測試的更大挑戰之一是,它們很快就會失效,然後成爲維護的噩夢。
稍後,我開始爲應用程序中的每個頁面創建一個包裝類,其中便利操作將要發送到該頁面的事件映射到底層的WebDriver
調用。這樣,每當下層頁面發生變化時,我只需要更改我的頁面包裝器,而不是更改整個腳本。因此,我的測試腳本現在以單個頁面包裝器上的調用表示,每個調用都返回一個反映UI新狀態的頁面包裝器。似乎工作得很好。
我傾向於使用FirefoxDriver
構建我的測試,然後在將測試滾動到我們的QA環境之前,檢查HtmlUnit
驅動程序是否提供了可比較的結果。如果這樣,然後我使用HtmlUnit
驅動程序運行測試。
這是我原來的修改硒DSL:
/**
* Copied from [[http://comments.gmane.org/gmane.comp.web.lift/44563]], adjusting it to no longer be a trait that you need to mix in,
* but an object that you can import, to ease scripting.
*
* With this object's method imported, you can do things like:
*
* {{"#whatever"}}: Select the element with ID "whatever"
* {{".whatever"}}: Select the element with class "whatever"
* {{"%//td/em"}}: Select the "em" element inside a "td" tag
* {{":em"}}: Select the "em" element
* {{"=whatever"}}: Select the element with the given link text
*/
object SeleniumDsl {
private def finder(c: Char): String => By = s => c match {
case '#' => By id s
case '.' => By className s
case '$' => By cssSelector s
case '%' => By xpath s
case ':' => By name s
case '=' => By linkText s
case '~' => By partialLinkText s
case _ => By tagName c + s
}
implicit def str2by(s: String): By = finder(s.charAt(0))(s.substring(1))
implicit def by2El[T](t: T)(implicit conversion: (T) => By, driver: WebDriver): WebElement = driver/(conversion(t))
implicit def el2Sel[T <% WebElement](el: T): Select = new Select(el)
class Searchable(sc: SearchContext) {
def /[T <% By](b: T): WebElement = sc.findElement(b)
def /?[T <% By](b: T): Box[WebElement] = tryo(sc.findElement(b))
def /+[T <% By](b: T): Seq[WebElement] = sc.findElements(b)
}
implicit def scDsl[T <% SearchContext](sc: T): Searchable = new Searchable(sc)
}
2
ScalaTest現在提供了一個硒DSL:
相關問題
- 1. 如何編寫驗收測試
- 2. 如何編寫異步Scala.js測試(例如使用ScalaTest)?
- 3. 如何使用Cucumber在功能級別編寫驗收測試?
- 4. 如何使用ScalaTest測試Dao對象
- 5. 使用specflow爲Mvc4/WebApi網站編寫驗收測試
- 6. Scalatest - 如何測試println
- 7. 如何編寫驗證測試?
- 8. 試驗型)scalatest
- 9. 如何使用JavaScript編寫測驗?
- 10. 如何在scalatest中禁用測試?
- 11. 如何使用httprouter編寫測試
- 12. 爲「精益」用戶故事編寫驗收測試
- 13. 使用ScalaTest測試AKKA演員
- 14. 使用ScalaTest測試多個數據集
- 15. 如何編寫JUnit測試?
- 16. 如何編寫測試dataSource.getPooledConnection()
- 17. CPPUnit如何編寫測試?
- 18. QuickFix驗收測試
- 19. 如何在Codeception WebDriver的上下文中編寫正確的PayPal驗收測試?
- 20. 如何編寫驗證調用子例程的單元測試?
- 21. 如何編寫用於設計驗證方法的Rspec測試
- 22. 如何使用ScalaTest測試基於Salat的方法
- 23. 如何使用ScalaTest測試預期異常的附加屬性
- 24. 如何使用Maven插件運行JUnit測試的Scalatest
- 25. 如何在ScalaTest測試中正確使用Spark?
- 26. 如何修復驗收測試路線?
- 27. 如何編寫作業測試用例
- 28. 如何編寫測試用例Clojure中
- 29. 如何編寫Controller的測試用例?
- 30. 如何編寫$ q.all的測試用例
上的網頁http://www.scalatest.org/getting_started_with_feature_spec給出了一個驗收測試的例子。你在找什麼? – paradigmatic