Javascript 等待。直到(预期条件。元素可禁用)不工作

Javascript 等待。直到(预期条件。元素可禁用)不工作,javascript,java,html,selenium,Javascript,Java,Html,Selenium,我需要通过页面中的定位器获取所有元素,并从中确定可单击的元素 屏幕截图,以便更好地理解: 不可见元素 可见和可点击的元素 带有a.quick-view元素的html代码: <a href="http://prestashop-automation.qatestlab.com.ua/ru/blouses/2-7-blouse.html#/1-size-s/11-color-black" class="thumbnail product-thumbnail"> <

我需要通过页面中的定位器获取所有元素,并从中确定可单击的元素

  • 屏幕截图,以便更好地理解:
不可见元素

可见和可点击的元素


  • 带有
    a.quick-view
    元素的html代码:

    <a href="http://prestashop-automation.qatestlab.com.ua/ru/blouses/2-7-blouse.html#/1-size-s/11-color-black" class="thumbnail product-thumbnail">
        <img src="http://prestashop-automation.qatestlab.com.ua/7-home_default/blouse.jpg" alt="" data-full-size-image-url="http://prestashop-automation.qatestlab.com.ua/7-large_default/blouse.jpg">
    </a>
    <div class="product-description">
        <h1 class="h3 product-title" itemprop="name"><a href="http://prestashop-automation.qatestlab.com.ua/ru/blouses/2-7-blouse.html#/1-size-s/11-color-black">Blouse</a></h1>
        <div class="product-price-and-shipping">
            <span itemprop="price" class="price">26,99&nbsp;₴</span>
        </div>
    </div>
    <ul class="product-flags">
    </ul>
    <div class="highlighted-informations hidden-sm-down">
    
        //============================
    
        <a href="#" class="quick-view" data-link-action="quickview"> //Searching element 
            <i class="material-icons search"></i> Быстрый просмотр
        </a>
    
        //=============================
    
        <div class="variant-links">
            <a href="http://prestashop-automation.qatestlab.com.ua/ru/blouses/2-8-blouse.html#/1-size-s/8-color-white" class="color" title="White" style="background-color: #ffffff"><span class="sr-only">White</span></a>
            <a href="http://prestashop-automation.qatestlab.com.ua/ru/blouses/2-9-blouse.html#/2-size-m/11-color-black" class="color" title="Black" style="background-color: #434A54"><span class="sr-only">Black</span></a>
            <span class="js-count count"></span>
        </div>
    </div>
    
    因此,在“调试”行中,我始终为true,但元素不可单击且不显示

    我不需要勾选每个元素-我只需要勾选clickable属性

    问题:
    如何按可单击属性检查元素

    我不确定您所说的可单击属性到底是什么意思。从技术上讲,页面上的所有内容都是可单击的元素。例如,您可以单击文本,但不会发生任何事情。 以下是元素不可单击的唯一原因,即如果像这样使用禁用属性:

    <button type="button" disabled>Click Me!</button>
    
    点击我!
    
    以下是禁用属性的一些链接:

    但是,在您的情况下,您指的是一个锚定标记,它总是可以单击,但可以通过三种方式禁用(禁用是指当您单击它时,不会发生任何事情):

  • 未设置“href”属性
  • 被css禁用
  • href set或onclick set返回false:

  • 我不确定你所说的可点击属性到底是什么意思。从技术上讲,页面上的所有内容都是可单击的元素。例如,您可以单击文本,但不会发生任何事情。 以下是元素不可单击的唯一原因,即如果像这样使用禁用属性:

    <button type="button" disabled>Click Me!</button>
    
    点击我!
    
    以下是禁用属性的一些链接:

    但是,在您的情况下,您指的是一个锚定标记,它总是可以单击,但可以通过三种方式禁用(禁用是指当您单击它时,不会发生任何事情):

  • 未设置“href”属性
  • 被css禁用
  • href set或onclick set返回false:

  • selenium的可点击性意味着它是可见的且已启用:

    因此,您所要做的就是检查webElement是否为isDisplayed()&isEnabled()

    List webElements=driver.findElements(By.xpath(“//a[@class='quick-view']);
    对于(WebElement e:webElements){
    如果(e.isDisplayed()&e.isEnabled()){
    System.out.println(e.getAttribute(“href”);
    }
    }
    
    selenium的可点击性意味着它是可见的且已启用:

    因此,您所要做的就是检查webElement是否为isDisplayed()&isEnabled()

    List webElements=driver.findElements(By.xpath(“//a[@class='quick-view']);
    对于(WebElement e:webElements){
    如果(e.isDisplayed()&e.isEnabled()){
    System.out.println(e.getAttribute(“href”);
    }
    }
    
    什么异常?@昆仑对不起,异常在其他地方执行。我没有编辑问题只有当你将光标移到上面时,快速查看才可见吗?什么异常?@KunLun对不起,异常在其他地方执行。我问了一个问题:只有将光标移到上面,快速查看才会显示吗?
        List<WebElement> webElements  = driver.findElements(By.xpath("//a[@class='quick-view']"));
        for (WebElement e :webElements) { 
            if (e.isDisplayed() && e.isEnabled()) {
                System.out.println(e.getAttribute("href"));
            }
        }