我只想在过滤器还没有打开时打开它们。为此,我检查“应用过滤器”按钮是否可见/可点击。
令我惊讶的是,我得到的元素是可见/可点击的,即使它不是。
下面提到的按钮代码,
<div class="m-t-20 text-left filter-btn-holder ">
<input type="hidden" id="filterType" value="">
<button type="button" class="submit btn btn-primary btn-mini filter-focus" id="filterButton" onclick="javascript:getFilteredMedia(true);" "="">Filter</button>
<button type="button" class="submit btn btn-danger btn-mini" id="filterButton" onclick="clearFilter();">Reset</button>
<button type="button" class="submit btn btn-mini" data-webarch="toggle-right-side" id="closeButton"><i class="fa fa-times" aria-hidden="true"></i></button>
</div>
方法尝试检查元素是否可单击
public boolean isClickable(WebElement el)
{
try{
WebDriverWait wait = new WebDriverWait(driver, 6);
wait.until(ExpectedConditions.elementToBeClickable(el));
return true;
}
catch (Exception e){
return false;
}
}
按钮的XPath:xpath = "//button[@id='filterButton' and text()[contains(.,'Filter')]]
4条答案
按热度按时间jdgnovmf1#
试试这个:
bejyjqdl2#
请使用id=__multiselect_mediatag的元素,而不是其子元素。
bxpogfeg3#
虽然我没有得到确切的答案,但我找到了一些变通方法。检查父元素类是否可见,或者是否使用javascript执行器。
我还是不明白为什么一个看不见的元素变得可见了。
1cklez4t4#
我也遇到过类似的问题。作为客户端输入验证的一部分,我们提供了一个框,列出了所有发现的错误。当然,该框包含了所有可能的错误消息,并且我们从Javascript切换它们的显示。然而,在填充了一个输入字段(并且其相关的错误消息被隐藏)之后,新的查询将报告它仍然可见。
在将文本发送到输入字段和重新读取显示的消息之间添加延迟并没有帮助,但最终有帮助的是使用不同的参数插入另一个对**findElements()**的调用。