即使元素在页面上也得到 '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 秒),这样你的问题就会消失。
在基于 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 秒),这样你的问题就会消失。