所以,我是这种语言的新手,我有一项特定的任务来查找和计算Google搜索页面中带有标签的所有特定单词。 所以我设法打开并找到了它,但找不到任何进一步的方法。 我的代码:
if(navigator){
navigator.geolocation.getCurrentPosition( pos => {
this.latitude = pos.coords.latitude;
this.longitude = pos.coords.longitude;
})
}
运行顺利,但是我几乎可以肯定这是错误的,而且我不知道如何继续计算这些元素。 感谢您的帮助。
答案 0 :(得分:3)
您非常接近!您可以执行以下操作来检索h3包含单词“ ebay”的计数,并断言正确的数字出现:
update
请注意def "checking for word"() {
given: " Search for word 'ebay' in google"
go "https://www.google.pl/"
$("body").find("input", name: "q").value("ebay")
$("center").$("input", 0, name: "btnK").click()
waitFor { title.endsWith(" Szukaj w Google")}
then: "Correct results are show"
$("h3").count { it.text().toLowerCase().contains("ebay") } == 10
}
,因为大多数结果返回为“ eBay”,而不与“ ebay”匹配。
我建议您调查页面对象,并创建类似于以下内容的GoogleHomePage和GoogleResultsPage:
toLowerCase()
结果页面:
import geb.Page
class GoogleHomePage extends Page {
static url = "http://www.google.com"
static at = {
logo.displayed
}
static content = {
logo { $("#hplogo") }
searchField { $("body").find("input", name: "q") }
searchButton { $("center").$("input", 0, name: "btnK") }
}
ResultsPage searchFor(String search) {
searchField.value(search)
searchButton.click()
browser.at(ResultsPage)
}
}
然后,在没有所有选择器等的情况下,您的测试最终看起来要干净得多,并且您可以为其他测试使用一些可重用的代码:
import geb.Page
class ResultsPage extends Page {
static at = { title.endsWith(" Szukaj w Google") }
static content = {
results { $("h3") }
}
def countResultsContaining(String expectedResultPhrase) {
results.count { it.text().toLowerCase().contains(expectedResultPhrase) }
}
}
对于资源,Geb Manual很好,但是Geb是用Groovy编写的-因此,搜索使用Groovy而不是Geb的方法会有所帮助。
答案 1 :(得分:0)
感谢您的回答,它们也可以工作,但是我设法以另一种方式进行操作,因此我将其发布在这里。行的窍门:
println $(By.className("LC20lb")).findAll {it.text().contains("ebay")}.size()