Я пытаюсь выполнить указанное c действие в указанное c время. Например, щелкнув «Ссылка A» точно в 21: 30: 30.123 (имеет значение Миллисекунды). Я использовал селен для щелчка детали, но проблема связана с установкой времени.
Поскольку часы на сайте имеют разницу по местному времени (О программе 38.ххх секунд). Я пробовал это:
public static void main(String[] args) throws InterruptedException {
Calendar TargetTime = Calendar.getInstance();
TargetTime.set(Calendar.YEAR , 2020);
TargetTime.set(Calendar.MONTH , 2 );
TargetTime.set(Calendar.DATE , 27 );
TargetTime.set(Calendar.HOUR , 21 );
TargetTime.set(Calendar.MINUTE , 30 );
TargetTime.set(Calendar.SECOND , 30 );
Date x = TargetTime.getTime();
long m = x.getTime();
Date CurrentTime = new Date();
long n = CurrentTime.getTime();
Thread.sleep(m - n+ 36500);
System.out.println("Hello World");
//webDriver1.click();
}
Но есть некоторые проблемы:
- Код автоматически добавляет один к номеру месяца, поэтому мне пришлось ввести его с минус 1.
- Я не могу установить Миллисекунды в TargetTime.
- Существует разница между CurrentTime и фактическим часовым поясом (я не знаю точный, но около 38se c) Также есть разница между часами веб-сайта и фактическим Время (около 1,5 сек c, это потому, что я добавляю 36,5 секунд вместо 38).
- Я пытался выяснить точную разницу во времени методом проб и ошибок, но мне это не удалось. Поскольку скорость подсчета ЦП постоянно меняется, иногда она идет вперед, а иногда назад часов веб-сайта.
Тогда я подумал, что если я смогу извлечь время из веб-сайта напрямую, все эти проблемы исчезнут. Но я не знаю, как это сделать. Элемент часов сайта выглядит следующим образом (8:36:33), как указано в приведенном ниже элементе div:
<div id="TimerDiv" style="direction: ltr; font-weight:bold; font-family:Arial; line-height:22px; font-size: 12px;">08<span style="color:#999; margin:0 2px">:</span>36<span style="color:#999; margin:0 2px">:33</span></div>