Поведение блокировки WebDriver API, когда браузер занят выполнением какого-то продолжительного JavaScript

Где-то в документации я читал, что API-интерфейсы WebDriver не блокируют (за исключением некоторых, таких как driver.get). Таким образом, выполнение WebElement click() или isDisplayed(), как правило, должны быть асинхронными (конечно, при условии, что нативные события включены).

У меня есть простая HTML-страница, которая выполняет длительную операцию (по сути, длинный цикл). Пока выполняется JS, браузер не отвечает, что ожидается Но я также заметил, что API WebDriver, например click()/isDisplayed()/executeScript(), блокируется, пока браузер занят выполнением скрипта.

Поскольку WebDriver выдает собственное событие для щелчка, а не синтезированное событие JS, я озадачен, почему блокируется API. Хотя в настоящее время такое поведение меня не беспокоит, я хочу знать, можно ли полагаться на этот характер блокировки при тестировании неотвечающих страниц? Я использую условное ожидание в своих тестах, но хотел бы понять, что происходит внутри, и зависит ли это от браузера/ОС?

Такое поведение наблюдается в Selenium 2.20.0 с InternetExplorerDriver (IE9) и ChromeDriver (Chrome 19) в Windows 7.

5
задан Shama 20 June 2012 в 10:58
поделиться