【问题标题】:Learning GEB and Spock学习 GEB 和 Spock
【发布时间】:2013-01-10 01:23:27
【问题描述】:

我是一名尝试学习 GEB 和 Spock 的手动测试员。要学习这些,我是否必须具备 java 或 groovy 的先验知识?我一直在看GEB的书,有哪些先决条件、书籍或学习资源?请帮忙。谢谢。

【问题讨论】:

    标签: testing groovy automated-tests spock geb


    【解决方案1】:

    我尝试编译一些必需品和一些“必备”,当我拿起 Geb 时发现它们非常有用。

    1. 一些Groovy Magic。本手册涵盖了学习 Groovy 所需的大部分内容,但出于显而易见的原因,如果您沉迷于该语言,则可能需要考虑 Groovy in Action。虽然学习 Groovy 不需要 Java,但如果您来自 Java(闭包除外)甚至 Python 背景,您可能可以浏览本教程 15 分钟,然后您就已经掌握了)。

      李>
    2. 一点硒。越多越好,但不要害怕,这个single page 告诉你所有你需要知道的关于你通常会使用的 Selenium Webdriver 的信息。但要强调的是,越多越好。

    3. jQuery 选择器(每个人都说这很简单,但坦率地说,我每小时至少参考手册两次。我很笨,所以……)。如果您是 jQuery 新手,您可能希望从 basic selectors 开始,然后单击左侧导航菜单了解更多信息。请注意,并非所有 jQuery 选择器都适用于 Geb,但 Geb 教程的选择器部分并不是非常详尽且引人入胜。

    4. 在我的测试用例结束时,我需要生成一个跨越多个测试用例的奇特报告,并且我在测试用例之间存在依赖关系。所以,我选择了TestNG 而不是 Spock。坦白说,我没有给Spock太多机会。

    5. PageObjects 实际上不是 Geb 的先决条件,但 PageObjects 非常棒,以至于您永远不想在它之外考虑 Geb。 PageObjects 是一个可爱的小模式,它表示您将 HTML 页面的结构包装到一个对象中,以便实际测试不必处理它。哈。得到你。让我用简单的英语说一下。

    假设您有一个带有输入文本框的注册表单,其 id 为“nametext”。你将如何获得文本框的句柄?在 DOM 术语中,在 javascript 中,您只需执行

     document.getElementById("nametext")
    

    在 Selenium 中,你会做类似的事情

     driver.findElement(By.id("nametext"))
    

    因此,如果您想在 Selenium 的文本框中填充 Jason,您可以执行

    driver.findElement(By.id("nametext")).sendKeys("Jason"); 
    

    如果您对所有输入字段都这样做,很快您的测试用例就会变得丑陋和可恶。取而代之的是,在 OO 术语中,您封装。你创建了一个新类,比如RegistrationPage 并把你的findElementsendKeys 包装成这样:

    public class RegistrationPage{
    
        …
    
        public RegistrationPage fillRegistrationForm(String name, String email){
    
            driver.findElement(By.id("nametext")).sendKeys(name); 
            driver.findElement(By.id("emailtext")).sendKeys(email); 
    
        }
    
    }
    

    从你的测试用例中,你会说

      RegistrationPage regPage=new RegistrationPage();
      regPage.fillRegistrationForm("Jason","jason@bourne.com");
    

    (更好的办法是将输入值包装到一个类中并将其传递给 fillRegistrationForm)

    事实上,Geb 以一种更好的方式利用 PageObjects - jQuery 选择器来拯救

    class InputFormPage extends Page{
    
        …
    
        static content={
            name {$("input", id:"entry_0")}
            emailAddress {$("input", id:"entry_1")}
        }
     }
    

    在你的测试用例中,你会说

     name.value ("Jason")
     emailAddress.value ("jason@bourne.com")
    

    【讨论】:

    • 部分链接过期,http://groovy.codehaus.org/Beginners+Tutorial 打不开,PageObjects也是
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 2014-08-02
    • 2018-12-18
    相关资源
    最近更新 更多