Почему функция executeAsyncScript (window.setTimeout (5000)) в Java для Селена удерживает следующую функцию, которая будет выполнена через 5 секунд? - PullRequest
0 голосов
/ 23 июня 2019

Я хочу использовать асинхронный вызов функции для асинхронного запуска нескольких сценариев, но я не могу этого добиться с помощью функции executeAsyncScript () javaScriprtExecutor. Вот небольшой фрагмент для справки.

Я считаю, что функция executeAsyncScript должна выполняться асинхронно, а вызов функции в строке № 2 (более быстрый по своей природе) должен быть завершен до выполнения executeAsyncScript (). но этого не происходит. Вызов функции в строке № 2 вызывается только после завершения выполнения функции 1 с задержкой в ​​5 секунд !!

Может ли кто-нибудь помочь мне понять, что я здесь не вижу?

1. js.executeAsyncScript("window.setTimeout(arguments[arguments.length - 1], 5000);");
2. driver.findElement(By.xpath("//input")).sendKeys("Search term!!");

В этой последовательности браузер ждет 5 секунд, а затем выполняет sendkeys ().

1 Ответ

0 голосов
/ 23 июня 2019

обе функции executeAsyncScript и execteScript блокируют поток управления WebDriver до их завершения. Вот почему задержка 5 секунд.

см. Это для полного объяснения WebDriver executeAsyncScript против executeScript

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