我正在尝试在www.bigbasket.com上的搜索结果中获取工具提示文字并使用以下代码
@FindAll({@FindBy(xpath="//*[contains(@id,'product')][not(contains(@style,'display:none'))]/div/span[2]/a")})
List<WebElement> lblProductName;
public String verifySearchResults(WebDriver browser, String productName){
System.out.println(lblProductName.size());
try{
Actions actions = new Actions(browser);
for(WebElement eachElement:lblProductName){
System.out.println(eachElement.getAttribute("href"));
actions.moveToElement(eachElement).perform();
//Actions action = new Actions(driver);
actions.moveToElement(eachElement).build().perform();
WebElement toolTipElement = browser.findElement(By.cssSelector(".uiv2-tool-tip-hover "));
System.out.println("Tooltip text is "+toolTipElement.getAttribute("textContent"));
}
}catch(Exception e){
System.out.println(e.getMessage());
}
return productName;
}
但是使用上面的代码我只能获得第一个搜索结果的工具提示文本。您能帮我解决一下如何获取所有搜索结果的工具提示文本吗?
要遵循的手动步骤 1.访问www.bigbasket.com 2.单击“跳过并探索”按钮 3.搜索Apple 4.将鼠标悬停在每个搜索结果上并查看工具提示文本
答案 0 :(得分:0)
我可以观察到的一件事是你正在使用多个tool-tip-hover
元素:
WebElement toolTipElement = browser.findElement(By.cssSelector(".uiv2-tool-tip-hover ")); //this shall always access the same element
相反,你应该使用它作为
List<WebElement> toolTipElement = browser.findElements(By.cssSelector(".uiv2-tool-tip-hover "))
OR
我建议创建父级并进一步访问其子级(您可以将其放入代码流中):
WebElement parentImgTitle = driver.findElements(By.cssSelector(".uiv2-list-box-img-title");
WebElement childTooltip = parentImgTitle.findElement(By.cssSelector(".uiv2-tool-tip-hover "));
注意 :此外,我不确定您的行为将在此处扮演什么角色。我怀疑是否有关于悬停的详细信息。只需尝试一次就可以忽略它们。