在下面的List<WebElement>
场景中,如果5个元素的xpath
不正确,有人可以在Page Factory等待机制上分享他/她的经验。
这里的等待时间是多少? 5秒或25秒或其他时间在内部代码中进行。
让我们说,设置10秒等待使用:
AjaxElementLocatorFactory ajaxElemFactory = new AjaxElementLocatorFactory(driver, 10);
但不使用硒隐式等待。
如果我写下面的代码-
**@FindAll({
@FindBy(css = HomePageLocators.megaMenu1),
@FindBy(xpath = HomePageLocators.anntaylorImage2),
@FindBy(css = HomePageLocators.megaMenu3),
@FindBy(xpath = HomePageLocators.anntaylorImage4),
@FindBy(xpath = HomePageLocators.anntaylorImage5),
}) public List<WebElement> pageLoadCondition;**
如果我打印pageLoadCondition.size,则假定所有定位符都是错误的(xpath不正确),然后打印0并返回空列表。
希望AjaxElementLocatorFactory
在这里不会出现,因为我们没有对该元素执行任何操作。
现在焦点移至代码中的下一行,即(显式等待5秒)
wait = new FluentWait<WebDriver>((WebDriver) driver).withTimeout(5, TimeUnit.SECONDS).pollingEvery(1,TimeUnit.SECONDS);
wait.until(ExpectedConditions.visibilityOfAllElements(pageLoadCondition));
然后,它最多需要等待5秒才能搜索列表中的5个元素,还是真的要等待5 * 5 = 25秒才能遍历并逐一检查列表中每个元素的存在。