Как именно implicitWait обрабатывается динамически в селене? - PullRequest
0 голосов
/ 13 февраля 2020

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

Итак, вопрос в том, как водитель узнал, что элемент загружается за 4 секунды и позволяет выйти из режима ожидания? Мы не упоминали ни одного условия в неявном ожидании, например, ищем видимость любого элемента, а затем выясняем, как именно неявное ожидание принимает вызов, чтобы выйти из ожидания?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

Неявное ожидание невозможно обработать динамически с помощью Selenium . В своем эпическом c комментарии Джим Эванс [Maintainer - Do tNet client / IEDriverServer] упомянул, что implicitlyWaits часто (всегда могут не быть) реализованы на remote сторона WebDriver системы. Это означает, что ImplicitWait запекается в для WebDriver вариантов, т.е. GeckoDriver , IEDriverServer , ChromeDriver , WebDriver Firefox расширение , устанавливаемое в анонимный профиль Firefox ( Selenium R C), и удаленный сервер WebDriver Java (* 1028) * селен-сервер standalone.jar ).

Как только вы установите implicitly_wait , экземпляр WebDriver сможет переносить эту конфигурацию до своего срока службы. Чтобы установить время ожидания, вы можете:

  • Python:

    driver.implicitly_wait(5)
    
  • Java:

    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    
  • Do tNet:

    driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
    

Если в любой момент времени вы хотите удалить ImplicitWait, вы можете добиться этого следующим образом:

  • Python:

    driver.implicitly_wait(0)
    
  • Java:

    driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
    
  • Do tNet:

    driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(0);
    
0 голосов
/ 13 февраля 2020

Неявное ожидание происходит на уровне драйвера, Явное ожидание происходит на уровне программирования. Большинство людей не знают об этом.

Неявное ожидание только проверяет, существует ли оно или нет, поэтому вам не нужно указывать никаких условий, как для явного ожидания. Но я поднял билет, чтобы включить неявное ожидание видимости также в Chrome (см. Здесь https://bugs.chromium.org/p/chromedriver/issues/detail?id=2016) и Firefox, Chrome включил это изменение, но firefox все еще не изменилось «т. Я попросил их включить его, потому что Firefox Legacy драйвер ждет существования элемента и видимости, поэтому я хочу, чтобы то же самое было здесь.

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