Как получить текст всплывающей подсказки с помощью Selenium WebDriver?

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


person Srinivasan Ramu    schedule 10.06.2016    source источник
comment
actions.moveToElement(eachElement).perform(); //Actions action = new Actions(driver); кажется бесполезным... это там или опечатка?   -  person Naman    schedule 10.06.2016
comment
Пожалуйста, поделитесь выводом, который у вас есть до сих пор, и который вы, возможно, действительно ожидаете.   -  person Naman    schedule 10.06.2016


Ответы (1)


Я мог заметить одну вещь: есть несколько элементов 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 "));

Примечание. Также я не уверен, какую роль здесь будут играть ваши действия. Я сомневаюсь, что там есть присутствие, чтобы получить детали по зависанию. Просто попробуйте один раз игнорировать их.

person Naman    schedule 10.06.2016