Как долго будет ждать FindElements? - PullRequest
0 голосов
/ 31 мая 2018

Скажите, что неявное время ожидания составляет 10 секунд.Затем я выполняю FindElements (множественное число!) С некоторым XPath.

Вопрос

Как долго FindElements ждет, пока не решит вернуться? (пожалуйста, не обращайте внимания на любые функции отложенного выполнения любого языка. Затем я перефразирую свой вопрос в FindElements (...). Count ())

Рассуждение вопроса

Полагаю, в случае отсутствия совпадения он будет ждать 10 секунд.Однако, если найдется хотя бы одно совпадение, вернется ли оно мгновенно?В этом случае мы пропустим возможные следующие элементы, если они будут заполнены javascript страницы в течение 10 секунд.

Моя общая проблема заключается в следующем:

  • Мы не хотим ждать тайм-аута безоговорочно все время (это будет плохо # 1)
  • Мы не хотим пропустить ни одного совпадения, которое доступно в течение тайм-аута (было бы плохо # 2

Перефразированный вопрос

Какойплохо (№1 или №2) - это реальность относительно поведения FindElements?

1 Ответ

0 голосов
/ 31 мая 2018

На этот метод влияет 'implicit wait' время, действующее на момент исполнения.При неявном ожидании этот метод вернется, как только в найденной коллекции окажется более 0 элементов, или вернет пустой список, если истечет время ожидания.

Что вы могли бы сделать, чтобы вы этого не делалипропустить все совпадения - дождаться полной загрузки страницы, проверив, что document.readyState равно завершению, а затем вызвать метод driver.findElements.

public void waitForPageLoaded() {
        ExpectedCondition<Boolean> expectation = new
                ExpectedCondition<Boolean>() {
                    public Boolean apply(WebDriver driver) {
                        return ((JavascriptExecutor) driver).executeScript("return document.readyState").toString().equals("complete");
                    }
                };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...