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

时间:2019-01-15 21:26:45

标签: automated-tests geb

所以,我是这种语言的新手,我有一项特定的任务来查找和计算Google搜索页面中带有标签的所有特定单词。 所以我设法打开并找到了它,但找不到任何进一步的方法。 我的代码:

if(navigator){
navigator.geolocation.getCurrentPosition( pos => {
this.latitude = pos.coords.latitude;
this.longitude = pos.coords.longitude;
})
}

运行顺利,但是我几乎可以肯定这是错误的,而且我不知道如何继续计算这些元素。 感谢您的帮助。

2 个答案:

答案 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()