首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >学习GEB和Spock

学习GEB和Spock
EN

Stack Overflow用户
提问于 2013-01-10 09:23:28
回答 1查看 9.4K关注 0票数 9

我是一个尝试学习GEB和Spock的手工测试人员。要学习这些,我是否必须具备java或groovy的先验知识?我一直在读GEB的书,前提条件是什么,书或学习资源是什么?请帮帮忙。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-10 09:54:11

我试着编译了一些必备要素和一些“好东西”,当我开始使用Geb时,我发现它们非常有帮助。

  1. Some Groovy Magic.本手册介绍了Groovy需要学习的大部分内容,但由于显而易见的原因,如果您对这门语言着迷,您可能会考虑使用Groovy in Action。虽然使用Groovy不需要Java,但如果您来自Java语言(除了闭包),甚至是Python背景,您可能可以快速浏览教程15分钟,并且您已经在那里了)。
  2. A一点Selenium。越多越好,但不用担心,这个single page告诉了您需要了解的关于通常使用的Selenium Webdriver的所有信息。但要强调的是,越多越好。
  3. jQuery选择器(每个人都说这很容易,但坦率地说,我每小时至少参考手册两次。我是哑巴,所以…)。如果您是jQuery的新手,您可能希望从basic selectors开始,然后单击左侧导航菜单了解更多信息。请注意,并不是所有的jQuery选择器都适用于Geb,但是Geb教程的选择器部分并不是非常详尽和引人入胜。
  4. 在我的测试用例结束时,我需要生成一个跨越多个测试用例的奇特的报告,并且我在测试用例之间有依赖关系。所以,我选择了TestNG而不是Spock。坦率地说,我没有给斯波克太多机会。
  5. PageObjects实际上不是Geb的先决条件,但是PageObjects是如此的棒,以至于你从来没有想过在它之外去思考Geb。PageObjects是一个可爱的小模式,它告诉您将HTML页面的结构包装到一个对象中,这样实际的测试就不必处理它了。哈哈。抓到你了。让我用简单的英语说一下。

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

代码语言:javascript
复制
 document.getElementById("nametext")

在Selenium中,您会做非常类似的事情。

代码语言:javascript
复制
 driver.findElement(By.id("nametext"))

因此,如果您希望在Selenium的文本框中填充Jason,您将执行

代码语言:javascript
复制
driver.findElement(By.id("nametext")).sendKeys("Jason"); 

如果你对所有的输入域都这样做,你的测试用例很快就会变得丑陋可恶。而不是这样,用面向对象的术语来说,你封装了。创建一个新类,命名为RegistrationPage,并将您的findElementsendKeys包装为:

代码语言:javascript
复制
public class RegistrationPage{

    …

    public RegistrationPage fillRegistrationForm(String name, String email){

        driver.findElement(By.id("nametext")).sendKeys(name); 
        driver.findElement(By.id("emailtext")).sendKeys(email); 

    }

}

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

代码语言:javascript
复制
  RegistrationPage regPage=new RegistrationPage();
  regPage.fillRegistrationForm("Jason","jason@bourne.com");

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

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

代码语言:javascript
复制
class InputFormPage extends Page{

    …

    static content={
        name {$("input", id:"entry_0")}
        emailAddress {$("input", id:"entry_1")}
    }
 }

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

代码语言:javascript
复制
 name.value ("Jason")
 emailAddress.value ("jason@bourne.com")
票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14249371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档