Geb assert на текст строки HTML таблицы

Я новичок в Geb, я пишу тест, который будет проверять текст на веб-странице и утверждать, если значение существует. Интересующий меня текст - это текст строки таблицы. Вот CSS / xpath строки моей таблицы HTML.

/html/body/table/tbody/tr[3]/td/table/tbody/tr[3]/td[2]/table/tbody/tr/td/table/tbody/tr[2]/td/b/pre/a

body > table > tbody > tr:nth-child(3) > td > table > tbody > tr:nth-child(3) > td:nth-child(2) > table > tbody > tr > td > table > tbody > tr:nth-child(2) > td > b > pre > a

мне нужно проверить, соответствует ли значение этой строки конкретному тексту и подтвердить его.

Какой лучший способ сделать в Гебе. Я испробовал множество вариантов, и я не получил четкую подсказку.

class HomePage extends Page
{
    static at ={ title== "Dispute Home Page"}

    static content = {
        displayMsg {$(By.xpath("/html/body/table/tbody/tr[3]/td/table/tbody/tr[3]/td[2]/table/tbody/tr/td/table/tbody/tr[2]/td/b/pre/a"))}

        def message = displayMsg.text()
        assert (message == 'text pattern')
    }
}

заранее спасибо

2 ответа

Решение

Для начала я настоятельно рекомендую вам воспользоваться API-интерфейсом Geb для навигатора, который позволяет получать содержимое со страницы, практически идентичное jquery. Использование xpath трудно читать, поддерживать и не рекомендуется.

В вашем блоке контента, если вы определите таблицу с идентификатором:

myTable{ $("table#myTable")}

Теперь вы можете делать такие вещи:

myTable.children('td').find{it.text() == 'your text here' }

Конечно, это можно расширить, чтобы найти конкретные строки или данные таблицы по имени или даже индексу. У меня есть несколько примеров правильных объектов страниц и файлов спецификаций в моем Github Repo, которые должны помочь вам в написании будущих тестов. Я надеюсь, что это дает вам достаточно для работы.

Похоже, вы утверждаете в блоке контента. Это должно быть по-своему. Что-то вроде этого:

class HomePage extends Page
{
    static at ={ title== "Dispute Home Page"}

    static content = {
        displayMsg {$(By.xpath("/html/body/table/tbody/tr[3]/td/table/tbody/tr[3]/td[2]/table/tbody/tr/td/table/tbody/tr[2]/td/b/pre/a"))}
    }

    def textCompare(){
        def message = displayMsg.text()
        assert (message == 'text pattern')
    }

}
Другие вопросы по тегам