学习GEB和Spock
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习GEB和Spock相关的知识,希望对你有一定的参考价值。
我是一名试图学习GEB和Spock的手动测试员。要了解这些,我必须事先了解java或groovy吗?我一直在阅读GEB的书,先决条件,书籍或学习资源是什么?请帮忙。谢谢。
答案
我尝试编写一些必需品和一些“好吃的东西”,当我拿起Geb时,我发现它非常有用。
- 一些Groovy Magic。本手册中涵盖了您需要学习Groovy的所有内容,但出于显而易见的原因,如果您沉迷于语言,您可能需要考虑Groovy in Action。虽然不需要Java来获取Groovy,但如果你来自Java(闭包除外)甚至是Python背景,你可以浏览15分钟的教程并且你已经在那里了。
- 一点点硒。更多,更好,但不要害怕,这个single page告诉你所有你需要知道你通常会使用的Selenium Webdriver。但要强调,越多越好。
- jQuery选择器(每个人都说它很简单,但坦率地说,我每小时至少两次参考手册。我很笨,所以......)。如果您不熟悉jQuery,您可以从basic selectors开始,然后单击左侧导航菜单以获取更多信息。请注意,并非所有jQuery选择器都适用于Geb,但Geb教程的选择器部分并不是非常详尽和引人入胜。
- 在我的测试用例结束时,我需要生成一个跨越多个测试用例的幻想报告,并且我在测试用例中有依赖关系。所以,我去了TestNG而不是Spock。坦率地说,我没有给Spock很多机会。
- PageObjects实际上不是Geb的先决条件,但是PageObjects非常棒,以至于你从不想在它之外考虑Geb。 PageObjects是一个可爱的小模式,它表示您将html页面的结构包装到Object中,以便实际测试不必处理它。哈。有你。让我用简单的英语说。
比如,你有一个带有输入文本框的注册表单,其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")
以上是关于学习GEB和Spock的主要内容,如果未能解决你的问题,请参考以下文章