ожидание, пока страница полностью загрузится в селене для node js - PullRequest
0 голосов
/ 07 августа 2020

Как заставить мой код ждать, пока страница не загрузится полностью в Nodejs? Я использую selenium-webdriver версии 4.0.0

  const driver = new Builder().forBrowser("firefox").build();
  await driver.get("http://www.tsetmc.com/Loader.aspx?ParTree=15131F");
  // here we should wait but how?

1 Ответ

0 голосов
/ 07 августа 2020

Здесь есть 2 концепции - это:

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

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

Для времени загрузки скрипта вам понадобится объект для синхронизации. Документы по селену дают хорошее описание различных стратегий ожидания и предоставляют примеры кода для разных языков.

Глядя на свою страницу, вы, скорее всего, захотите попробовать явное ожидание. В Javascript это:

 await driver.wait(until.elementLocated(By.id('foo')), 30000);

Вы можете обновить идентификатор By, чтобы он был ПОСЛЕДНИМ элементом на странице, или использовать этот подход для каждого элемента, с которым вам нужно взаимодействовать.

На тех же страницах также перечислены другие ожидаемые условия в зависимости от состояния, которое вам нужно.

Быстрое заключительное замечание, если вы не знаете, селен 4 все еще находится в альфа-версии . Вы можете получить к нему доступ, если вам нужны новые функции, но они все еще проходят тестирование и часто меняются. Если вам не нужны новые функции Selenium 4, вы можете вернуться к последней стабильной версии .

...