Geb 断言 html 表行文本



我是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

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

在盖布最好的方式是什么。我尝试了多种选择,但我没有得到明确的线索。

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

提前谢谢你

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

在内容块中,如果您定义了一个带有 id 的表:

myTable{ $("table#myTable")}

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

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

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

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

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

最新更新