Как навести указатель мыши на разные изображения с помощью динамических путей, используя Selenium Java - PullRequest
0 голосов
/ 05 февраля 2019

Есть семь изображений.Я хочу сделать наведение мыши на каждом изображении и проверить, отображается кнопка 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.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

To Mouse Наведите курсор на все семь (7) изображений и проверьте, отображается ли элемент с текстом AddToCart или нет, вы можете использовать следующее решение:

driver.get("http://automationpractice.com/index.php");
((JavascriptExecutor) driver).executeScript("return arguments[0].scrollIntoView(true);", new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[@class='homefeatured']"))));
List<WebElement> myProducts = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//ul[@id='homefeatured']//div[@class='product-image-container']/a/img")));
for(WebElement product:myProducts)
{
    new Actions(driver).moveToElement(product).build().perform();

    if(new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//ul[@id='homefeatured']//div[@class='product-image-container']/a/img//following::a[@title='Add to cart']/span"))).isDisplayed())
        System.out.println("AddToCart button is displayed");
    else{
        System.out.println("AddToCart button is not displayed");
    }
}
0 голосов
/ 05 февраля 2019

Пожалуйста, попробуйте это и дайте мне знать, если это работает. Это сработало для меня.

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");


            }
...