我是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')
}
}
提前谢谢
答案 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中有一些正确的页面对象和规范文件的例子,它们应该帮助你编写未来的测试。我希望这能为你提供足够的工作。