Evg*_*niy 11 frameworks spock geb robotframework
以前我使用Robot Framework来自动化应用程序测试,但是新客户要求关注Spock + GEB.我从来没有使用它,但我需要快速比较其中两个工具并做出选择.请帮助我了解它们之间的区别以及每种方法的优点/缺点.
pls*_*ame 12
我告诉你关于Geb的事情,我使用gebish来测试网络应用程序超过6个月.这都是他的好处:
现在有关它们的更多细节.
Geb利用WebDriver库进行浏览器自动化.这意味着Geb可以与WebDriver使用的任何浏览器一起使用,并且WebDriver使用的浏览器列表一直在增长.
核心支持的浏览器是:
还有实验支持:
WebDriver还支持远程驱动程序.这允许您自动化在另一台机器上运行的浏览器!这意味着您可以在Mac或Linux机器上轻松地针对IE浏览器运行测试套件(反之亦然).
Geb从jQuery中获取灵感,提供了一种简洁有效的内容获取方式.这称为Navigator API.
可以在任何地方使用dollar函数来基于CSS选择器,属性匹配器和/或索引来选择内容.
// CSS 3 selectors
$("div.some-class p:first[title='something']")
// Find via index and/or attribute matching
$("h1", 2, class: "heading")
$("p", name: "description")
$("ul.things li", 2)
// 'text' is special attribute for the element text content
$("h1", text: "All about Geb")
// Use builtin matchers and regular expressions
$("p", text: contains("Geb"))
$("input", value: ~/\d{3,}-\d{3,}-\d{3,}/)
// Chaining
$("div").find(".b")
$("div").filter(".c").parents()
$("p.c").siblings()
Run Code Online (Sandbox Code Playgroud)
Geb拥有对页面对象模式的一流支持,利用Groovy的DSL功能,允许开发人员以简洁,可维护和可扩展的方式轻松定义页面的有趣部分.
import geb.Page
class LoginPage extends Page {
static url = "http://myapp.com/login"
static at = { heading.text() == "Please Login" }
static content = {
heading { $("h1") }
loginForm { $("form.login") }
loginButton(to: AdminPage) { loginForm.login() }
}
}
class AdminPage extends Page {
static at = { heading.text() == "Admin Section" }
static content = {
heading { $("h1") }
}
}
Run Code Online (Sandbox Code Playgroud)
现代网页充满了异步操作,如AJAX请求和动画.Geb为这一生活事实提供内置支持.
任何内容查找或操作都可以包装在waitFor子句中.
waitFor {
$("p.status").text() == "Asynchronous operation complete!"
}
Run Code Online (Sandbox Code Playgroud)
这将持续测试条件一段时间(可配置),直到它通过.可以使用相同的技术来等待内容,而不一定是内容具有某些特征.
def dynamicParagraph = waitFor { $("p.dynamically-added") }
dynamicParagraph.text() == "Added dynamically!"
Run Code Online (Sandbox Code Playgroud)
您还可以定义内容DSL中的页面对象应隐式等待内容
import geb.Page
class DynamicPage extends Page {
static content = {
dynamicParagraph(wait: true) { $("p.dynamically-added") }
}
}
Run Code Online (Sandbox Code Playgroud)
根据这个定义,当请求dynamicParagraph时,Geb会隐含等待一段时间才能出现.
Geb为流行的测试框架提供集成模块,如Spock,JUnit,TestNG,EasyB和Cucumber(通过Cuke4Duke)
虽然Geb在所有这些框架中运行良好,但它真的很适合Spock.Spock是一个创新的测试框架,非常适合与Geb一起使用.使用Spock + Geb可以轻松地为您提供非常清晰,简洁和易于理解的测试规范.
import geb.Page
import geb.spock.GebSpec
class LoginSpec extends GebSpec {
def "login to admin section"() {
given:
to LoginPage
when:
loginForm.with {
username = "admin"
password = "password"
}
and:
loginButton.click()
then:
at AdminPage
}
}
Run Code Online (Sandbox Code Playgroud)
Geb易于集成到任何构建系统中,并且可以使用与以下构建/项目系统集成的信息和示例:
您可以在这里查看我的示例(Spock + GEB):github
在这里阅读更多关于geb的信息:官方网站
谢谢!!!
归档时间: |
|
查看次数: |
4439 次 |
最近记录: |