我使用Selenium WebDriver来测试一个网站。我有PageObjects来代表LoginPage,HomePage和ManagementPage。我的测试首先登录,返回一个HomePage,然后单击一个返回ManagementPage的按钮。然后它检查一堆东西,点击一个指向HomePage的链接,然后点击一个注销链接。
这一切在Chrome上都很好,根本不用pageLoadTimeout。但是,在火狐中,当我试图单击注销链接时,我会打开一个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;发布于 2014-06-16 07:03:34
pageLoadTimeout设置在抛出错误之前等待页面加载完成的时间,而implicitlyWait则指定驱动程序在搜索元素时应等待的时间(如果没有立即出现)。
另外,您不需要为每个页面设置这个值,您需要为每个驱动程序设置它们一次。
https://stackoverflow.com/questions/24237789
复制相似问题