我使用 Selenium WebDriver 来测试一个网站。我有 PageObjects 来表示LoginPage
、HomePage
和ManagementPage
。我的测试首先登录,它返回 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;