我是 selenium 的新手(但经验丰富的 java 开发人员)。
我正在使用类似下面的东西:
WebElement searchBasket = pDriver.findElement(By.xpath("//a[contains(.,'Search&Baskets')]"));
WebElement searchproduct = pDriver.findElement(By.xpath("//a[contains(.,'Search a product')]"));
//if search an agreement is not show up, then click on other menu, then click it back
pWait.until(ExpectedConditions.elementToBeClickable(By.xpath("//a[contains(.,'Search&Baskets')]")));
pDriver.findElement(By.xpath("//a[contains(.,'Search&Baskets')]")).click();
// click on search an agreement
try {
pWait.until(ExpectedConditions.elementToBeClickable(By.xpath("//a[contains(.,'Search&Baskets')]")));
action = new Actions(pDriver);
action.moveToElement(searchBasket).build().perform();
pWait.until(ExpectedConditions.elementToBeClickable(By.xpath("//a[contains(.,'Search a product')]")));
searchproduct.click();
} catch (TimeoutException e) {
}
其中 pWait 是:
WebDriverWait wait = new WebDriverWait(driver, 15);
但是,当我运行测试用例时,出现以下错误:
Unable to locate element: {"method":"xpath","selector":"//a[contains(.,'Search&Baskets')]"}
Command duration or timeout: 4 milliseconds
我认为它应该在抛出这个异常之前等待至少 15 秒。从上面的日志看来,它似乎只在 4 毫秒内引发了异常。我可以在控制台上看到,一旦它到达那条线,它就会抛出异常。
我将隐式等待设置为 0 并使用显式等待。
我在这里有什么遗漏吗。
此外,在显式和隐式等待中,是达到那么多时间还是精确那么多时间,例如,如果我将隐式等待设置为 10 秒,那么这是否意味着等待确切的 10 秒或等待最多 10 秒(如果找到元素然后继续, 即使元素 founf 在第 6 秒)
显式等待也一样吗?
请帮忙