创业板 - 查找和计数与文本的特定词的所有元素

问题描述 投票:2回答:2

所以,我非常新的这种语言,我已经有了特定的任务来查找和计数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")}
    }
}

这种流畅运行,但我几乎可以肯定,这是错的,我不知道如何继续计数这些元素。谢谢你的帮助。

automated-tests geb
2个回答
3
投票

你已经很接近!你可以做下面的检索,其中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而不是盖布将帮助你做到这一点。


0
投票

感谢您的答案,他们还工作,但我设法做到这一点的另一种方式,所以我在这里张贴。该做的伎俩行:

println $(By.className("LC20lb")).findAll {it.text().contains("ebay")}.size()
© www.soinside.com 2019 - 2024. All rights reserved.