有七张图像。我想要做的每一个形象鼠标悬停和检查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属性的文本。
为了鼠标悬停在所有的七(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");
}
}
请试试这个,让我知道,如果它works.It为我工作。
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");
}