如何使用Selenium WebDriver获取工具提示文本?

时间:2016-06-10 01:58:13

标签: selenium jquery-tooltip

我正在尝试在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.将鼠标悬停在每个搜索结果上并查看工具提示文本

1 个答案:

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

注意 :此外,我不确定您的行为将在此处扮演什么角色。我怀疑是否有关于悬停的详细信息。只需尝试一次就可以忽略它们。