Selenium Webdriver (Java) - Как обойти динамический текст и таймер обратного отсчета? - PullRequest
0 голосов
/ 28 января 2019

Я работаю над автоматизацией регистрации, содержащей счетчик.

Итак, я хочу подписаться на то, что происходит каждые 7 минут.

Вот чтовеб-код выглядит так:

<class-countdown-timer _ngcontent-c19="" _nghost-c24="">
  <!---->
  <h2 _ngcontent-c24="" id="class-countdown-timer">Próxima clase en vivo en <span _ngcontent-c24="" class="countdown-timer">02:15</span>
    <i _ngcontent-c24="" aria-hidden="true" class="icon-clock"></i>
  </h2>
</class-countdown-timer>

Моя проблема в том, что текст «таймер обратного отсчета класса» является динамическим, а «таймер обратного отсчета» - обратным отсчетом с 07:00 до 00:00.

Мой крик о помощи заключается в том, что мне нужно выполнить определенное действие, когда текст "class-countdown-timer" имеет значение "Próxima clase en vivo en", а счетчик находится между "05:00" и "02:00 "

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

спасибо: D

1 Ответ

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

Попробуйте следующий код:

// Count-down timer for looping upto 8 minutes
        int countdown = 480;
        while(countdown-->0) {
            // Fetching the actual class-countdown-timer value
            String actualTimerText = driver.findElement(By.id("class-countdown-timer")).getText().trim();
            String expectedTimerText = "Próxima clase en vivo en ";

            // Fetching the actual countdown-timer value
            String countdownTimer = driver.findElement(By.xpath("//span[@class='countdown-timer']")).getText().trim();

            // Converting the time for better comparing
            SimpleDateFormat format = new SimpleDateFormat("hh:mm");
            Date expectedFirstTime = format.parse("05:00"), expectedSecondTime = format.parse("02:00");
            Date actualCountdownTimer = format.parse(countdownTimer);

            // Checking the condition if the 'class-countdown-timer' text is 'Próxima clase en vivo ee' and counter is in between '05:00' and '02:00' or not? 
            if(actualTimerText.equals(expectedTimerText) && ((actualCountdownTimer.equals(expectedSecondTime) || actualCountdownTimer.after(expectedSecondTime)) && (actualCountdownTimer.equals(expectedFirstTime) || actualCountdownTimer.before(expectedFirstTime)))) {
                System.out.println("Condition Satisfied...");
                // Do something
                break;
            }
            // Waiting for one second before finding the element and checking the condition
            Thread.sleep(1000);
        }

Вышеупомянутый подход использует концепцию цикла, итерацию до 8 минут (480 секунд), пока требуемое условие не будет выполнено.

...