我不明白.. 我已经搜索了 2 天的答案,但我找不到解决这个问题的单一解决方案。
代码如下所示(在 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(但我可以在屏幕上看到该元素)。
编辑:
那么,如果这些标准方法不起作用,我该如何确定元素是否可见?
当前元素属性:
已经检查了这些帖子:
Selenium webdriver 问题:预期条件失败:等待位于 (..) 的元素的可见性