gpt4 book ai didi

frameworks - Spock + GEB 与机器人框架

转载 作者:行者123 更新时间:2023-12-04 02:05:22 27 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 提供事实和引用来回答它.

2年前关闭。




Improve this question




以前我使用 Robot Framework 来自动测试应用程序,但是一个新客户要求注意 Spock + GEB。我从未使用过它,但我需要快速比较其中两个工具并做出选择。请帮助我了解它们的不同之处以及它们各自的优点/缺点。

最佳答案

我告诉你关于 Geb,我使用 gebish 测试 web 应用程序超过 6 个月。这就是他的所有好处:

  • 跨浏览器自动化
  • 类 jQuery API
  • 页面对象
  • 异步
  • 测试
  • 构建系统集成

  • 现在有更多关于他们每个人的细节。
  • 跨浏览器自动化

  • Geb 利用 WebDriver 库实现浏览器自动化。这意味着 Geb 可以与 WebDriver 使用的任何浏览器一起使用,并且 WebDriver 使用的浏览器列表一直在增长。

    支持的核心浏览器是:
  • 火狐
  • Internet Explorer
  • 谷歌浏览器
  • 歌剧

  • 也有实验支持:
  • Android 上的 Chrome
  • iPhone 和 iPad 上的 Safari

  • WebDriver 还支持远程驱动程序。这允许您自动化在另一台机器上运行的浏览器!这意味着您可以在舒适的 Mac 或 Linux 机器上轻松地在 IE 浏览器上运行您的测试套件(反之亦然)。
  • 类 jQuery API

  • Geb 从 jQuery 中汲取灵感,提供了一种简洁有效的获取内容的方式。这称为导航器 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()
  • 页面对象

  • Geb 对 Page Object 模式具有一流的支持,利用 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") }
    }
    }
  • 异步

  • 现代网页充满了异步操作,如 AJAX 请求和动画。 Geb 为这一生活事实提供了内置支持。

    任何内容查找或操作都可以包装在 waitFor 子句中。
    waitFor { 
    $("p.status").text() == "Asynchronous operation complete!"
    }

    这将继续测试条件一段时间(这是可配置的),直到它通过。可以使用相同的技术只是等待内容,不一定要内容具有某些特征。
    def dynamicParagraph = waitFor { $("p.dynamically-added") }
    dynamicParagraph.text() == "Added dynamically!"

    您还可以在 Content DSL 中为页面对象定义应隐式等待的内容
    import geb.Page

    class DynamicPage extends Page {
    static content = {
    dynamicParagraph(wait: true) { $("p.dynamically-added") }
    }
    }

    使用此定义,当请求 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
    }
    }
  • 构建系统集成

  • Geb 很容易集成到任何构建系统中,并且提供了有关与以下构建/项目系统集成的信息和示例:
  • Gradle
  • chalice
  • 马文

  • 您可以在这里查看我的示例 (Spock+GEB): github

    在这里阅读更多关于geb的信息: Official Site

    谢谢!!!

    关于frameworks - Spock + GEB 与机器人框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16479539/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com