Вы довольно близко! Вы можете сделать следующее, чтобы получить счетчик, где h3 содержит слово «ebay» и подтвердить правильность отображаемого числа:
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()
, так как большинство результатов возвращаются как «eBay» и не будут матч "Ebay".
Я бы порекомендовал просмотреть объекты страницы и создать 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 хорошо, но Geb написан на Groovy - поэтому поиск того, как это сделать, используя Groovy, а не Geb, поможет вам.
Существует два способа сделать это в T-SQL:
declare @p1 geography = 'POINT(1 2)', @p2 geography = 'POINT(6 8)';
-- using geometry
SELECT geography::Parse(geometry::Parse(@p2.STUnion(@p1).ToString()).STConvexHull().ToString())
-- using lat, long methods
SELECT geography::Parse('LINESTRING('+str(@p1.Long)+' '+str(@p1.Lat)+','+str(@p2.Long)+' '+str(@p2.Lat)+')')