【发布时间】:2013-01-10 01:23:27
【问题描述】:
我是一名尝试学习 GEB 和 Spock 的手动测试员。要学习这些,我是否必须具备 java 或 groovy 的先验知识?我一直在看GEB的书,有哪些先决条件、书籍或学习资源?请帮忙。谢谢。
【问题讨论】:
标签: testing groovy automated-tests spock geb
我是一名尝试学习 GEB 和 Spock 的手动测试员。要学习这些,我是否必须具备 java 或 groovy 的先验知识?我一直在看GEB的书,有哪些先决条件、书籍或学习资源?请帮忙。谢谢。
【问题讨论】:
标签: testing groovy automated-tests spock geb
我尝试编译一些必需品和一些“必备”,当我拿起 Geb 时发现它们非常有用。
一些Groovy Magic。本手册涵盖了学习 Groovy 所需的大部分内容,但出于显而易见的原因,如果您沉迷于该语言,则可能需要考虑 Groovy in Action。虽然学习 Groovy 不需要 Java,但如果您来自 Java(闭包除外)甚至 Python 背景,您可能可以浏览本教程 15 分钟,然后您就已经掌握了)。
李>一点硒。越多越好,但不要害怕,这个single page 告诉你所有你需要知道的关于你通常会使用的 Selenium Webdriver 的信息。但要强调的是,越多越好。
jQuery 选择器(每个人都说这很简单,但坦率地说,我每小时至少参考手册两次。我很笨,所以……)。如果您是 jQuery 新手,您可能希望从 basic selectors 开始,然后单击左侧导航菜单了解更多信息。请注意,并非所有 jQuery 选择器都适用于 Geb,但 Geb 教程的选择器部分并不是非常详尽且引人入胜。
在我的测试用例结束时,我需要生成一个跨越多个测试用例的奇特报告,并且我在测试用例之间存在依赖关系。所以,我选择了TestNG 而不是 Spock。坦白说,我没有给Spock太多机会。
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 并把你的findElement 和sendKeys 包装成这样:
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也是