Перейти к содержимому

Фотография

Selenium. Отслежить изменение свойства "DISPLAY".


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 HVV83

HVV83

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:ФИО

Отправлено 11 августа 2017 - 08:44

Доброго времени, в UI который я тестирую, практически после нажатия на каждый элемент появляется блок <div> типа "Loading data...", и часто так происходит, что из-за него я не могу нажать нужный мне элемент.

Хочу создать класс-хелпер, в котором будет статический метод, который будет дожидаться изменения статуса "DISPLAY" в этом блоке на "none", и его (этот метод) буду вызывать перед нажатием каждого элемента.

Подскажите, правильным ли будет такой подход, и как на Java реализовать данную проверку.


  • 0

#2 HVV83

HVV83

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:ФИО

Отправлено 11 августа 2017 - 09:18

Метод написал так:

public class UtilClass {

    public static boolean waitForHideLoadingSatus (WebDriver driver) throws InterruptedException {

        int count = 0;
        boolean isElementDisplayed;

        do {
            isElementDisplayed = driver.findElement(By.id("outputPanelStatus")).isDisplayed();
            Thread.sleep(100);
            count++;
        }
        while(!isElementDisplayed && (count < 100));

        return count < 100;
    }
}

  • 0

#3 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 11 августа 2017 - 09:53

Нет  конечно.

У тебя стандартная ситуация, ты кликаешь на что-то - появляется лоадер("крутелка"). Тебе надо дождаться пока крутелка исчезнет, чтобы ты мог вводить данные.

К сожелению elementToBeClickable не подходит, т.к.  клик происходит если элемент visible and enabled.

 

Поэтому используют простейнький:

WebDriverWait wait = new WebDriverWait(driver, 5000);
        wait.until(ExpectedConditions.invisibilityOfElementLocated(By(твой локатор)

  • 0

#4 HVV83

HVV83

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:ФИО

Отправлено 11 августа 2017 - 10:22

 

Нет  конечно.

У тебя стандартная ситуация, ты кликаешь на что-то - появляется лоадер("крутелка"). Тебе надо дождаться пока крутелка исчезнет, чтобы ты мог вводить данные.

К сожелению elementToBeClickable не подходит, т.к.  клик происходит если элемент visible and enabled.

 

Поэтому используют простейнький:

WebDriverWait wait = new WebDriverWait(driver, 5000);
        wait.until(ExpectedConditions.invisibilityOfElementLocated(By(твой локатор)

Т.е. этим методом проверять, отсутствует ли "крутелка" на странице, а затем продолжать кликать? Если да, то стоит ли его выносить в класс-хелпер и оттуда вызывать?


  • 0

#5 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 11 августа 2017 - 11:18

Т.е. этим методом проверять, отсутствует ли "крутелка" на странице, а затем продолжать кликать?

 

да. Более точно ждать, пока крутелка не пропадет

то стоит ли его выносить в класс-хелпер и оттуда вызывать?

 

Да. Иногда делают просто метод, который ждет, пока пропадет крутелка, иногда создают отдельный метод типо clickAndLoader - туда передают локатор на какой кликнуть, тут очень много вариантов и каждый делает так, как ему удобней.


  • 1


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных