Geb 断言 html table 行文本
Geb assert on an html table row text
我是 Geb 的新手,我正在编写一个测试来检查网页上的文本并断言该值是否存在。我感兴趣的文本是 table 行文本
这是我的 HTML table 行的 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')
}
}
提前致谢
看起来您在内容块中有您的断言。它应该在它自己的方法中。像这样:
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')
}
}
对于初学者,我强烈建议您利用 Geb's navigator api,它允许您从页面上获取几乎与 jquery 相同的内容。使用 xpath 难以阅读、难以维护且不是最佳实践。
在您的内容块中,如果您定义一个 table,其 ID 为:
myTable{ $("table#myTable")}
现在您可以执行以下操作:
myTable.children('td').find{it.text() == 'your text here' }
这当然可以扩展为按名称甚至索引查找特定行或 table 数据。我的 Github Repo 中有一些正确的页面对象和规范文件的示例,它们应该有助于您编写未来的测试。我希望这能给你足够的工作量。
我是 Geb 的新手,我正在编写一个测试来检查网页上的文本并断言该值是否存在。我感兴趣的文本是 table 行文本 这是我的 HTML table 行的 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')
}
}
提前致谢
看起来您在内容块中有您的断言。它应该在它自己的方法中。像这样:
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')
}
}
对于初学者,我强烈建议您利用 Geb's navigator api,它允许您从页面上获取几乎与 jquery 相同的内容。使用 xpath 难以阅读、难以维护且不是最佳实践。
在您的内容块中,如果您定义一个 table,其 ID 为:
myTable{ $("table#myTable")}
现在您可以执行以下操作:
myTable.children('td').find{it.text() == 'your text here' }
这当然可以扩展为按名称甚至索引查找特定行或 table 数据。我的 Github Repo 中有一些正确的页面对象和规范文件的示例,它们应该有助于您编写未来的测试。我希望这能给你足够的工作量。