即使元素在页面上也得到 'geb.navigator.EmptyNavigator is not present'

Getting 'geb.navigator.EmptyNavigator is not present' even when element is on the page

在基于 Geb 的测试中,我使用了非常简单的检查:

at ReportsPage

其中页面对象包含:

static at = {
    $("#navContent .current").text() == "Reports"
}

此检查在一台 PC 上运行良好,但在另一台 PC 上因 'geb.navigator.EmptyNavigator is not present' 而失败。两者都在测试同一个外部网站,因此收到相同的 HTML 代码。还使用相同版本的 Geb、Webdriver 和 Firefox 浏览器。因为我使用 GebReportingSpec 它会在失败时存储页面。我在文本编辑器中检查了它,可以看到所需的元素:

<div id="navContent">
    <ul>
        <li class="current">
            <a href="reports" title="Reports">Reports</a>
        </li>
        ...
    </ul>
</div>

Firefox 驱动程序有一个特点,它有时不等待页面加载就从 WebDriver.get(String) 调用返回。这就是 Geb 引入 atCheckWaiting config option 的原因。我建议将它设置为较低的值(我通常使用 1 秒),这样你的问题就会消失。