【发布时间】:2019-09-24 17:36:34
【问题描述】:
我想在尝试点击某个元素之前检测它是否可点击。在我的特定用例中,该元素在处理过程中被其顶部的另一个元素隐藏,完成后,覆盖层被移除并且可以单击该元素。不幸的是,条件elementIsVisible 不考虑一个元素被另一个元素隐藏,方法WebElement.isDisplayed 也不考虑一个元素。
// find an element that is hidden behind some overlay
const hiddenElement = await driver.findElement(By.id('hiddenElement'));
// wait for element returns the "hidden" element
const await visibleElement = driver.wait(webdriver.until.elementIsVisible(hiddenElement));
// "isDisplayed" reports the "hidden" element as visible
const visible = await hiddenElement.isDisplayed();
我可以清楚地使用覆盖元素来检测元素是否被隐藏,但这必须针对每种不同类型的覆盖进行自定义,我实际上正在寻找一种更通用的方法来检测元素是否实际上是 可点击。
【问题讨论】:
-
条件
elementToBeClickable怎么样? -
有同样的经历。这是因为此刻出现了一些其他的元素。像淡入消息等。解决方案是等到页面稳定。然后执行您的功能。注意 ElementToBeClickable 也可能不起作用
-
@Fenio 我不知道 JavaScript 的 webdriver api 中有任何条件
elementToBeClickable? -
@doberkofler 是的,您寻找 JS 解决方案,但没有这样的解决方案。基本上,此条件检查元素是否为
visible和enabled。它不会帮助您解决问题
标签: javascript selenium selenium-webdriver