Хотел бы создать таймер в Selenium и выполнить какое-то действие, пока не достигнет определенного периода времени - PullRequest
1 голос
/ 01 октября 2019

Я пытаюсь продолжать выполнять действие в цикле, пока не достигну определенного периода времени.

Пример: выполнить что-то вроде sysout в течение 10 секунд, затем остановить выполнение.

Я видел некоторую информацию о классе Timer, но до сих пор он не был полезен.

Вкод ниже, пытаясь продолжать прокручивать страницу вниз (потому что это бесконечная прокрутка), пока не достигнет некоторого времени в секундах.

    JavascriptExecutor js = (JavascriptExecutor) driver;

    while(countdown <= 15) {
        //countdown should be my defined limit of time
        js.executeScript("window.scrollTo(0, document.body.scrollHeight);");
    }

1 Ответ

2 голосов
/ 01 октября 2019

Используйте код ниже:

import java.text.ParseException;
import java.util.concurrent.TimeUnit;


public class WaitAndExecute {

    public static void main(String[] args) throws InterruptedException, ParseException {

        long startTime = System.nanoTime();

        long endTime = startTime;
        long durationInSeconds = 0;
        long durationInNano = 0;
        while(durationInSeconds<10) {
            methodToTime();
            System.out.println("2 seconds");
            endTime = System.nanoTime();
            durationInNano = (endTime - startTime); // Total execution time in nano seconds
            durationInSeconds = TimeUnit.NANOSECONDS.toSeconds(durationInNano); // Total execution time in seconds

            if(durationInSeconds>=10) {
                System.out.println("10 seconds done");
                break;
            }

        }
        System.out.println(durationInSeconds);
    }

    private static void methodToTime() {
        try {
            TimeUnit.SECONDS.sleep(2);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

}

Выход:

2 секунды 2 секунды 2 секунды 2 секунды 2 секунды 10 секунд сделано 10


Старый код

Используйте приведенный ниже код:

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.JavascriptExecutor;

public class WaitAndExecute {

public static void main(String[] args) throws InterruptedException {
     int countdown = 1;
        while (countdown < 10){
            System.out.println(countdown);
            JavascriptExecutor js = (JavascriptExecutor) driver;  // pass your webdriver reference variable 
            js.executeScript("window.scrollTo(0, document.body.scrollHeight);");
            ++countdown;
            TimeUnit.SECONDS.sleep(10);
        }

}

Измените номер строки ниже, согласно необходимой итерации:

  while (countdown < 10){
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...