学习GEB和Spock

9

我是一名手动测试人员,正在尝试学习GEB和Spock。为了学习这些,我是否需要具备Java或Groovy的先前知识?我一直在阅读GEB的书籍,有哪些先决条件、书籍或学习资源?请帮忙,谢谢。

我是一名手动测试员,想要学习 GEB 和 Spock。我需要事先了解 Java 或 Groovy 吗?我一直在阅读 GEB 的书籍,请问有哪些必备条件、书籍或学习资源可以推荐呢?谢谢!
1个回答

32

我尝试编译了一些在学习Geb时我发现非常有用的基础知识和一些“好东西”。

  1. 一些 Groovy 魔法。这个手册涵盖了你需要学习 Groovy 的大部分内容,但出于明显的原因,如果你对这门语言着迷,你可能需要考虑阅读 Groovy in Action。虽然不需要 Java(除了闭包),但如果你来自 Java(除了闭包)或甚至 Python 背景,你可能只需花 15 分钟浏览一下教程就可以掌握它了。

  2. 一点 Selenium。越多越好,但不用担心,这个 单页面 就能告诉你关于 Selenium Webdriver 的通用知识,但要强调的是:越多越好。

  3. jQuery 选择器(每个人都说很容易,但坦白地说,我每小时至少要查看两次手册。我很笨,所以...)。如果你是 jQuery 新手,你应该从 基本选择器 开始,然后单击左侧导航菜单以获取更多信息。请注意,并非所有 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"); 

如果对于所有的输入字段都这样做,很快你的测试用例将变得难看且让人讨厌。相反,在面向对象的术语中,你需要封装起来。你可以创建一个名为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");
< p > < em >(更好的想法是将输入值封装到一个类中,并将其传递给fillRegistrationForm) < p>事实上,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也是如此。 - Yu Jiaao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接