Геб ждать, пока элемент исчезнет - PullRequest
0 голосов
/ 14 ноября 2018

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

Я читаю документацию, в которой рассказывается, как ждать появления элемента, но не дается информация о том, как ждать элемент.исчезнуть, я не знаю, как реализовать это в проекте Cucumber, Geb, Groovy.

Ответы [ 2 ]

0 голосов
/ 01 января 2019

Как описано в документации , блок waitFor использует Groovy Truth , чтобы узнать, когда он достаточно долго ждал. Когда вы помещаете в него навигатор, а элемент в данный момент отсутствует, он будет ожидать его появления или до истечения максимального времени ожидания.

Так что если вы хотите дождаться исчезновения элемента, вы можете просто поместить его в waitFor, например:

// go to the page
waitFor(2) { $(".loadingspinner").displayed }
waitFor(10) { !$(".loadingspinner").displayed }
// do your assertions

Если загрузочный счетчик уже исчез, waitFor немедленно вернется. Если он никогда не исчезнет, ​​через 10 секунд он выдаст WaitTimeoutException, что сделает ваш тест неудачным.

0 голосов
/ 16 ноября 2018

Я отредактирую / объясню это немного позже, когда у меня будет больше времени:

В вашем объекте страницы:

static content = {
    loadingSpinner(wait:3, required:false) { $("mat-spinner") } 
    //this wait:3 is redundant (i think) if we also give the waitFor() a timeout
    //required:false allows our wait !displayed to pass even if the element isnt there
}

def "Handle the loader"() {
    try {
        waitFor(2) { loadingSpinner.isDisplayed() }
    } catch (WaitTimeoutException wte) {
        //do nothing, if spinner doesnt load then thats ok
        //most likely the spinner has come and gone before we finished page load
        //if this is not the case, up our waitFor timeout
        return true;    
    }
    waitFor(10) { !loadingSpinner.isDisplayed() }
}
...