我不明白..我已经寻找答案两天了,但我找不到解决这个问题的单一解决方案。
代码如下所示(在 try catch 块内):
Presence = new WebDriverWait(Driver, custTimeout);
Presence.until(ExpectedConditions.presenceOfElementLocated(By.xpath(ElementXpath)));
单独的 try catch 块:
Visisble = new WebDriverWait(Driver, custTimeout);
Visisble.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(ElementXpath)));
这也显示为 FALSE:
foundElement.isDisplayed();
这失败了:
Clickable = new WebDriverWait(Driver, custTimeout);
Clickable.until(ExpectedConditions.elementToBeClickable(By.xpath(ElementXpath)));
现在,当元素在屏幕上可见并且可以单击时,PRESENCE 如何/为什么会通过而 VISIBILITY 会失败:
ElementToClick.get(0).click();
所以基本上,元素是可见的并且元素是可交互的,但“检查是否可见”却失败并出现异常。
看到对“可见性”的检查基本上是寻找元素的高度和宽度,我决定也通过以下方式手动检查:
ElementToClick.getAttribute("height");
ElementToClick.getAttribute("width");
两个值都是 0(但我可以在屏幕上看到该元素)。
Edit:
那么,如果这些标准方法不起作用,我该如何识别元素是否可见呢?
当前元素属性:
已经检查了这些帖子:
预期条件失败:等待 By.xpath 定位的元素的可见性
Selenium Webdriver 问题:预期条件失败:等待位于 (..) 的元素的可见性
https://sqa.stackexchange.com/questions/24459/selenium-webdriver-tests-sometimes-doesnt-find-elements
Selenium:硒如何识别可见或不可见的元素?是否有可能它已加载到 DOM 中但未渲染到 UI 上?
Selenium 中的 isDisplayed() 与 isVisible()