pageLoadTimeout不适用于使用PageObjects的firefox

时间:2014-06-16 06:32:49

标签: java selenium selenium-webdriver selenium-firefoxdriver

我使用Selenium WebDriver测试网站。我有PageObjects来表示LoginPageHomePageManagementPage。我的测试首先登录,返回HomePage,然后单击返回ManagementPage的按钮。然后它会检查一堆内容,点击返回HomePage的链接,然后点击退出链接。

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

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

我希望能够只针对每个驱动程序设置一次,这是我从this question开始收集的内容。但this question表示pageLoadTimeout不能用于点击链接,这让我感到困惑,因为我确实为我工作,但只有我为每个PageObject设置它。

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

this.driver = driver;

1 个答案:

答案 0 :(得分:3)

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