"ExpectedConditions.visibilityOfElementLocated" 和 "ExpectedConditions.presenceOfElementLocated" 之间的确切区别是什么

What is the exact difference between "ExpectedConditions.visibilityOfElementLocated" and "ExpectedConditions.presenceOfElementLocated"

如果我的问题听起来很初级,我提前道歉,我是 QA 和 Selenium 的新手。

两者之间的确切区别是什么:

 wait.until(ExpectedConditions.visibilityOfElementLocated
                    (By.xpath("//a[text()='Show advanced settings...']"))).click();

 wait.until(ExpectedConditions.presenceOfElementLocated
                    (By.xpath("//a[text()='Show advanced settings...']"))).click();

我看过 here 但没弄明白。

visibilityOfElmementLocated 检查元素是否存在并且可见。为了检查可见性,它确保元素的高度和宽度大于 0。

presenceOfElementLocated 仅检查 dom 以查看它是否可以定位元素,无论其可见性如何。

来源: https://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html#visibilityOf-org.openqa.selenium.WebElement-

visibilityOf public static ExpectedCondition visibilityOf(WebElement 元素) 期望检查已知存在于页面 DOM 上的元素是否可见。 Visibility是指元素不仅能显示,而且高度和宽度都大于0。 参数: