GEB - найти и посчитать все элементы с определенным словом в тексте

Удалить предупреждения.filterwarnings и добавить:

numpy.seterr(all='raise')
2
задан kriegaex 4 February 2019 в 00:45
поделиться

2 ответа

Спасибо за ответы, они тоже работают, но мне удалось сделать это по-другому, поэтому я публикую это здесь. Линия, которая делает трюк:

println $(By.className("LC20lb")).findAll {it.text().contains("ebay")}.size()
0
ответ дан kriegaex 4 February 2019 в 00:45
поделиться

Вы довольно близко! Вы можете сделать следующее, чтобы получить счетчик, где 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, поможет вам.

0
ответ дан kriegaex 4 February 2019 в 00:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: