所以,我非常新的这种语言,我已经有了特定的任务来查找和计数withing在搜索页面标签在谷歌所有特定的词。所以我设法打开,并找到它,但我找不到任何方式futher移动。我的代码:
class GoogleUiSpec extends GebSpec {
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")}
$("h3").findAll{ it.has("ebay")}
}
}
这种流畅运行,但我几乎可以肯定,这是错的,我不知道如何继续计数这些元素。谢谢你的帮助。
你已经很接近!你可以做下面的检索,其中H3包含单词“易趣”的数量和主张正确的数字显示:
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
}
注意toLowerCase()
大多数返回结果为“易趣”,将不符合“易趣”。
我会建议寻找到页面对象,并创建一个类似于GoogleHomePage和GoogleResultsPage东西:
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) }
}
}
然后你的测试最终看起来会更加清晰没有所有的选择等,你有其他测试一些可重用的代码:
class GoogleSpec extends GebReportingSpec {
def "checking for word"() {
given: " Search for word 'ebay' in google"
def searchPhrase = "ebay"
def googlePage = to GoogleHomePage
when: "I search for ebay"
def resultsPage = googlePage.searchFor(searchPhrase)
then: "Correct results are shown"
resultsPage.countResultsContaining(searchPhrase) == 10
}
}
至于资源,在Geb Manual是好的,但盖布被写在Groovy - 所以寻找如何使用Groovy而不是盖布将帮助你做到这一点。
感谢您的答案,他们还工作,但我设法做到这一点的另一种方式,所以我在这里张贴。该做的伎俩行:
println $(By.className("LC20lb")).findAll {it.text().contains("ebay")}.size()