java - 如何通过 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 属性文本。
解决方案
请试试这个,让我知道它是否有效。它对我有用。
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");
}
推荐阅读
- html - Flex 1:1 不适用于 Ionic 网格。我需要分配空间 50: 50
- functional-programming - 如果我不知道它们的类型,请比较两个变量
- javascript - For循环继续为什么结果数字是16?
- google-cloud-platform - 如何将 BigQuery 管理员角色添加到 Cloud Deployment Manager Jinja 文件?
- mysql - 试图显示一个值出现在数据集中的实例总数
- google-chrome-extension - 如何在 Chrome 扩展程序/应用程序中从 G Suite 检索当前登录用户的组织单位?
- haskell - Hedgehog.Gen.list的定义中freeze有什么作用
- javascript - 在 Ember JS 组件中初始化数组
- jquery - 插入查询中的动态列选择 - Oracle
- python-3.x - 如何使用python3中的一个for循环从列表中的字符串中删除数字?