geb是什么
一个浏览器自动化测试的框架,基于selenium框架以及groovy语言
geb的作用
-
主要是用于页面级别的测试,通过写jQuery的方式,来测试前端
-
黑盒测试,主要是来测试页面是否正确返回,以及相关页面功能是否正常
-
替代前端的checklist,代码具有可复制性
geb的问题
-
由于基于的是浏览器的测试,这块测试的自动化程度有多少?怎么在相关的测试环境来测试?需要相关的测试环境有图形界面?
-
后续的发展方向?关于黑盒测试部分,自动化程度很受影响,后续的发展? selenium?
geb的使用
基本的代码
Browser.drive{
go "http://gebish.org"
assert title == "Geb - Very Groovy Browser Automation"
$("#sidebar .sidemenu a", text: "jQuery-like API").click()
assert $("#main h1")*.text() == ["Navigating Content", "Form Control Shortcuts"]
assert $("#sidebar .sidemenu a", text: "jQuery-like API").parent().hasClass("selected")
}.quit()
运行该groovy.script,即可进行相关的测试程序
程序说明:
-
整体的框架基于browser.drive,基于groovy脚本来运行
-
很重要的依赖因素:Browser 以及drive() method
-
支持类似jquery的方式来进行相关assert
geb其他方面
- Pages
class SearchPage extends Page {
static url = "search"
static at = { title == "Search engine" }
static content = {
searchField { $("input[name=q]") }
searchButton(to: ResultsPage) { $("input[value='Search']") }
}
void search(String searchTerm) {
searchField.value searchTerm
searchButton.click()
}
}
Browser.drive {
to SearchPage
search "Chuck Norris"
assert result(0).text().contains("Chuck")
}
通过上述方式,进行相关页面的定义,进行相关页面的操作
-
Modules
-
js的相关测试
<html>
<head>
<script type="text/javascript">
var aVariable = 1;
</script>
</head>
</html>
针对这部分的测试案例:
Browser.drive {
go "/"
assert js.aVariable == 1
}
这样可以测试相关js的变量以及相应的运行流程。
这里有有个问题,众多周知,angularjs,形成了一个$scope,这块针对js的测试,可否加入angularjs的支持?
-
下载方面的测试。
-
cloud browser testing 这部分,多浏览器的支持?
总结
geb作为黑盒测试部分,确实是个好东西,替代前端测试的checklist部分,同时,针对多浏览器的兼容性方面,应该是未来的一个很好的方向。