Automated tests GEB-查找并计算文本中具有特定单词的所有元素

Automated tests GEB-查找并计算文本中具有特定单词的所有元素,automated-tests,geb,Automated Tests,Geb,所以,我对这门语言很陌生,我有一项特殊的任务,就是在谷歌的搜索页面中找到并计算所有带有标签的特定单词。 所以我设法打开了门,找到了它,但我找不到任何进一步移动的方法。 我的代码: 类GoogleUiSpec扩展了GebSpec{ def“检查单词”(){ 给定:“在谷歌中搜索“ebay”一词” “去”https://www.google.pl/" $(“body”).find(“输入”,name:“q”).value(“易趣”) $(“中心”).$(“输入”,0,名称:“btnK”)。单击()

所以,我对这门语言很陌生,我有一项特殊的任务,就是在谷歌的搜索页面中找到并计算所有带有标签的特定单词。 所以我设法打开了门,找到了它,但我找不到任何进一步移动的方法。 我的代码:

类GoogleUiSpec扩展了GebSpec{ def“检查单词”(){ 给定:“在谷歌中搜索“ebay”一词” “去”https://www.google.pl/" $(“body”).find(“输入”,name:“q”).value(“易趣”) $(“中心”).$(“输入”,0,名称:“btnK”)。单击() waitFor{title.endsWith(“Szukaj w Google”)} $(“h3”).findAll{it.has(“易趣”)} } } 这运行顺利,但我几乎可以肯定这是错误的,我不知道如何继续计算这些元素。
谢谢你的帮助。

你已经很接近了!您可以执行以下操作来检索h3中包含单词“ebay”的计数,并断言正确的数字:

def“检查单词”(){
给定:“在谷歌中搜索“ebay”一词”
“去”https://www.google.pl/"
$(“body”).find(“输入”,name:“q”).value(“易趣”)
$(“中心”).$(“输入”,0,名称:“btnK”)。单击()
waitFor{title.endsWith(“Szukaj w Google”)}
然后:“显示正确的结果”
$(“h3”).count{it.text().toLowerCase().contains(“易趣”)}==10
}
请注意
toLowerCase()
,因为大多数结果返回为“eBay”,与“eBay”不匹配

我建议查看页面对象,创建一个Google主页和Google结果页面,类似于:

导入geb.Page
类谷歌主页扩展页面{
静态url=”http://www.google.com"
静态at={
logo.display
}
静态内容={
logo{$(“#hplogo”)}
searchField{$(“body”).find(“输入”,名称:“q”)}
搜索按钮{$(“中心”).$(“输入”,0,名称:“btnK”)}
}
结果页面搜索(字符串搜索){
searchField.value(搜索)
搜索按钮。单击()
browser.at(结果页)
}
}
结果页面:

导入geb.Page
类ResultsPage扩展页面{
静态at={title.endsWith(“Szukaj w Google”)}
静态内容={
结果{$(“h3”)}
}
def CountResultContaining(字符串ExpectedResultPhase){
results.count{it.text().toLowerCase().contains(ExpectedResultPhase)}
}
}
然后,在没有所有选择器等的情况下,您的测试看起来更干净,并且您有一些可用于其他测试的可重用代码:

class GoogleSpec扩展了GebReportingSpec{
def“检查单词”(){
给定:“在谷歌中搜索“ebay”一词”
def searchPhrase=“易趣”
def googlePage=至谷歌主页
当:“我搜索易趣”
def resultsPage=googlePage.searchFor(searchPhrase)
然后:“显示正确的结果”
resultsPage.countResultsContaining(搜索短语)==10
}
}

至于资源,这是很好的,但是Geb是用Groovy编写的-因此,搜索如何使用Groovy而不是Geb来完成这项工作将对您有所帮助。

感谢您的回答,它们也很有效,但我设法用另一种方式完成了这项工作,因此我将其发布在这里。这句话的意思是:

println$(By.className(“LC20lb”)).findAll{it.text().contains(“ebay”)}.size()

如果任何人也有一些好的来源来学习geb(我目前正在阅读文档,但我找不到解决此问题的方法),如果他能将其发送给meI,我将不胜感激。我认为接受并更新另一个答案是礼貌的,因为它是正确的,并且包含完整的测试用例和额外信息,不只是像你这样一句话的片段。嗯,是的,当然,这就是为什么我对这个答案投了更高的票(但我知道你是新来的,没问题,我会解释:a)我说你认为你的答案没有更好的地方。b) 我说了“接受并投票”,但你仍然没有接受答案。这只能由问题的作者,即您来完成。点击灰色的小复选标记,使其变为绿色,有效地将答案标记为正确,从而结束问题。有些人在他们的专业领域中寻找未回答的问题以提供帮助,这就是我最初来到这里的原因,但却不得不阅读整个问题和答案以发现它已经得到了回答。哦,我的糟糕,很抱歉没有这样做,我将立即接受。谢谢你冷静的解释。