Как сделать наведение мыши в geb spock - PullRequest
0 голосов
/ 18 мая 2018

Я использую geb spock и пытаюсь навести элемент, однако получаю ошибку.Ниже приведены подробности.Класс объекта страницы

class HomePage extends Page {

    static at ={
        title.contains("Activity Dashboard")
    }

    static content = {
        tabConnections (wait : true) {$("a", "class" : contains("dropdown-toggle"), "text" : "Connections")}
        subMenuManageConnections (wait: true) {tabConnections.find("ul").find("a" , "href": "/managecash/EDGE_Network" , "text" : "Manage Connections")}
    }


    public void mouseHoverMethod(){
        waitFor {tabConnections.displayed}

        Actions actions = new Actions(driver)
        actions.moveToElement(tabConnections).build().perform()
    }
}

Когда я вызываю метод mouseHoverMethod из моего файла спецификации спока, получаю сообщение об ошибке ниже: on line (actions.moveToElement(tabConnections).build().perform()), как показано ниже:

Сообщение об ошибке:

groovy.lang.MissingMethodException: Нет подписи метода: org.openqa.selenium.interactions.Actions.moveToElement () применимо для типов аргументов: (geb.content.TemplateDerivedPageContent) значения: [pageobjects.general.HomePage -> tabConnections: geb.navigator.NonEmptyNavigator] Возможные решения: moveToElement (org.openqa.selenium.WebElement), moveToElement (org.openqa.selenium.WebElement, int, int)

пожалуйста, помогите мне, как можно сделать зависание мыши в Geb Spock?

Ответы [ 3 ]

0 голосов
/ 19 мая 2018

Вы также можете использовать интерактивный блок Геба, см. http://www.gebish.org/manual/current/#complex-interactions

Ваш метод будет выглядеть следующим образом ->

public void mouseHoverMethod(){
    waitFor {tabConnections.displayed}
    interact {
        moveToElement(tabConnections)
    }
}
0 голосов
/ 20 мая 2018

@ kriegaex, @erdi.Спасибо за ваши решения.Я также могу найти одно рабочее решение и созданные ниже методы в объекте страницы.Все три метода работают нормально.

public void mouseHoverMethodOne (TemplateDerivedPageContent element){
        waitFor {element}
        element.jquery.mouseover()
        element.click()
    }

public void mouseHoverMethodTwo (TemplateDerivedPageContent element){
        waitFor {element.displayed}
        Actions actions = new Actions(driver)
        actions.moveToElement(element.firstElement()).build().perform()
        element.click()
    }

public void mouseHoverMethodThree (TemplateDerivedPageContent element){
        waitFor {element.displayed}
        interact {
            moveToElement(element)
        }
        element.click()
    }

Спасибо за вашу помощь в этом.Я оценил ваши ответы тоже, так как они дают мне много понимания.

0 голосов
/ 19 мая 2018

В сообщении об ошибке указывается, что вы предоставляете экземпляр TemplateDerivedPageContent (tabConnections) для метода moveToElement().Но если вы проверите подпись метода, вы увидите, что ожидается аргумент WebElement.Конечно, Selenium WebDriver ничего не знает о специфических для Geb классах.Таким образом, вы должны получить веб-элемент из вашего навигатора следующим образом:

actions.moveToElement(tabConnections.firstElement()).build().perform()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...