首页 > 解决方案 > 如何通过 Selenium Java 将鼠标悬停在具有动态 xpath 的不同图像上

问题描述

有七幅图像。我想将鼠标悬停在每个图像上并检查 AddToCart 按钮是否显示。我尝试了以下代码,但它不起作用。

参考:http ://automationpractice.com/index.php

public boolean checkMouseHoveronAllItems(WebDriver driver)
{
    String xpathOfItems="//[@id='homefeatured']/li['+index+']/div/div[1]/div/a[1]/img";                                                                        
    String xpathOfAddToCartButtons="//div[@class='button-container']/a[@title='Add to cart']";
    boolean res=false;
    for(int index=1;index<=countNoOfItems(driver);index++)
    {
        element=driver.findElement(By.xpath(xpathOfItems));
        performMouseHover(element);
        System.out.println("Item By index"+element.getAttribute("alt"));
        element=element.findElement(By.xpath(xpathOfAddToCartButtons));
        if(element.isDisplayed())
        {
            res=true;               
            Log.info("Element is available");
        }
        else 
        {
            res=false;
        }
    }
    return res;
}

代码总是采用第一个元素并打印 alt 属性文本。

标签: javaseleniumselenium-webdrivermousehoverwebdriverwait

解决方案


请试试这个,让我知道它是否有效。它对我有用。

List<WebElement> elmntimg=driver.findElements(By.xpath("//img[@class='replace-2x img-responsive']"));
            boolean res=false;

            for(int ix=0;ix<elmntimg.size();ix++)
            {
             Actions action=new Actions(driver);
             action.moveToElement(elmntimg.get(ix)).build().perform();
             System.out.println("Item By index"+elmntimg.get(ix).getAttribute("alt"));
             WebElement elecart=driver.findElement(By.xpath("//div[@class='button-container']/a[@title='Add to cart']"));
             if(elecart.isDisplayed())
                 res=true;
                 System.out.println("Element is available");


            }

推荐阅读