Selenium找到元素(锚定),但仍然表示元素不可见?

Selenium找到元素(锚定),但仍然表示元素不可见?,selenium,xpath,css-selectors,webdriverwait,linktext,Selenium,Xpath,Css Selectors,Webdriverwait,Linktext,我有一个“清除所有”按钮,它是一个锚。HTML结构如下所示: <div class="form-row toggle-closed" id="ProductFilters" style="display: block;"> <div class="form-row__filter"> <ul class="form-row__filter__bg-display"> <li class="filter__g

我有一个“清除所有”按钮,它是一个锚。HTML结构如下所示:

<div class="form-row toggle-closed" id="ProductFilters" style="display: block;">
    <div class="form-row__filter">
        <ul class="form-row__filter__bg-display">
            <li class="filter__group__item__small">
                <a id="ProductFiltersFilterText" class="f-right" data-select-all="ProductFilters" href="#">clear all</a>
            </li>
        </ul>
    </div>  
</div>
然后我开始调试,在自动Chrome窗口中,我可以看到通过执行
ExpandFilterSection
,过滤器被展开,“全部清除”按钮被暴露,然后一个bug说:

OpenQA.Selenium.ElementNotVisibleException: 'element not visible'
在汽车中,我看到:

似乎找到了“全部清除”按钮,为什么会显示“元素不可见”?按钮的功能由JavaScript触发。

要在文本为的元素上单击(),请清除所有内容您必须为所需的
元素诱导WebDriverWait可禁用()
,并且您可以使用以下任一选项:

  • linkText

    SeleniumHelper.ExpandFilterSection(_webDriver, "#ProductFilters");
    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.LinkText("clear all"))).Click();
    
  • css选择器

    SeleniumHelper.ExpandFilterSection(_webDriver, "#ProductFilters");
    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("div#ProductFilters>div.form-row__filter>ul.form-row__filter__bg-display>li.filter__group__item__small>a#ProductFiltersFilterText"))).Click();
    
  • xpath

    SeleniumHelper.ExpandFilterSection(_webDriver, "#ProductFilters");
    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//div[@id='ProductFilters']/div[@class='form-row__filter']/ul[@class='form-row__filter__bg-display']/li[@class='filter__group__item__small']/a[@id='ProductFiltersFilterText']"))).Click();
    

在单击元素之前尝试滚动到元素。@支持URI“滚动到元素”是什么意思?
var element=driver.findelelement(by.id(“ProductFilters”);动作动作=新动作(驱动);actions.MoveToElement(元素);actions.Perform()这会将元素带到可见区域。为什么不按id选择元素?@supputuri代码给了我错误,你能给出一个答案来解释你的评论吗?
SeleniumHelper.ExpandFilterSection(_webDriver, "#ProductFilters");
new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//div[@id='ProductFilters']/div[@class='form-row__filter']/ul[@class='form-row__filter__bg-display']/li[@class='filter__group__item__small']/a[@id='ProductFiltersFilterText']"))).Click();