Geb在html表格行

时间:2017-07-10 21:18:19

标签: html tags geb

我是Geb的新手,我正在编写一个测试,用于检查网页上的文本并断言该值是否存在。我感兴趣的文本是表格行文本 这是我的HTML表格行的CSS / 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

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

我需要检查此行的值是否与特定文本匹配并断言。

Geb最好的办法是什么?我尝试了各种各样的选择,但我没有明确的线索。

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 个答案:

答案 0 :(得分:0)

看起来你在内容块中有你的断言。它应该是它自己的方法。像这样:

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')
    }

}

答案 1 :(得分:0)

对于初学者,我强烈建议您利用Geb's navigator api允许您从页面获取与jquery几乎相同的内容。使用xpath很难阅读,难以维护而不是最佳实践。

在您的内容块中,如果您定义一个ID为

的表格
myTable{ $("table#myTable")}

现在您可以执行以下操作:

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

这当然可以扩展为按名称甚至索引查找特定的行或表数据。我在Github Repo中有一些正确的页面对象和规范文件的例子,它们应该帮助你编写未来的测试。我希望这能为你提供足够的工作。