我对位于此处http://www.gebish.org/manual/current/api/geb/navigator/Navigator.html的导航器API所用的语言感到有些困惑。
特别是,我对.isDisplayed方法感到困惑。
方法文档指出:“如果显示唯一的上下文元素,则返回true;如果是空的导航器,则返回false。不能在多元素导航器上调用。”
问题是,如果我在空的导航器上调用.isDisplayed(),则不会返回false。而是抛出此错误:
table: geb.navigator.EmptyNavigator' is not present
Run Code Online (Sandbox Code Playgroud)
它失败的行看起来像这样:
at SomePage //This page has a module element called "module"
if(module.table.isDiplayed()){ // module has a navigtor element called table
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
问题中的表元素确实不存在,因此该表元素确实是一个空的导航器,但是根据文档,这意味着当我调用.isDisplayed()时,它应该返回false,但是会抛出上述错误
再次调用诸如.isEmpty()之类的类似导航器方法时,情况相同,如果在页面上未找到该元素,我希望从空元素中调用.isEmpty()时返回true,但它抛出EmptyNavigator异常。
是什么赋予了?
这是因为页面上模块上的table元素是必填元素(默认设置)。当您尝试使用必需的页面元素,但选择器返回一个空的导航器时,geb将抛出该异常。要解决此问题,您要告诉geb不需要该模块:
class Module{
static content {
table(required: false) { /* selector here*/ }
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当您使用表格时,您将获得空的导航器,而不是异常。
| 归档时间: |
|
| 查看次数: |
2375 次 |
| 最近记录: |