0

我使用 Selenium WebDriver 来测试一个网站。我有 PageObjects 来表示LoginPageHomePageManagementPage。我的测试首先登录,它返回 a HomePage,然后单击一个返回 a 的按钮ManagementPage。然后它会检查一堆东西,单击返回的链接HomePage,然后单击注销链接。

这一切都适用于 Chrome,pageLoadTimeout根本不使用 a。但是,在 Firefox 中,我NoSuchElementException在尝试单击注销链接时会打开。我假设这是因为尝试单击注销按钮时页面尚未完全加载。所以我driver.manage().timeouts().pageLoadTimeout(5000, TimeUnit.MILLISECONDS)在我的测试开始时放了一个,就在我创建驱动程序之后。我仍然得到同样的错误。将超时更改为5 milliseconds证明超时有效,因为页面未加载并TimeOutException抛出 a。

如果我将 移动driver.manage().timeouts().pageLoadTimeout(5000, TimeUnit.MILLISECONDS)到 的构造函数,HomePage那么它一切正常。所以我可以通过为每个 PageObject 设置超时来解决我的问题。

我希望只能为每个驱动程序设置一次,这就是我从这个问题中收集到的意思。但是这个问题说 pageLoadTimeout 不适用于单击链接,这让我感到困惑,因为我确实为我工作,但前提是我为每个 PageObject 设置了它。

我还有其他事情要做吗?或者,当驱动程序传递给 PageObject 时,超时是否会重置?我看不到这将如何发生,因为我在构造函数中所做的只是:

this.driver = driver;
4

1 回答 1

3

pageLoadTimeout设置在引发错误之前等待页面加载完成implicitlyWait的时间量,同时指定驱动程序在搜索元素时应等待的时间量(如果该元素不立即存在)。
此外,您不需要为每个页面设置此值,您需要为每个驱动程序设置一次。

于 2014-06-16T07:03:34.960 回答