Перейти к содержимому

BigHooter

Регистрация: 02 июн 2014
Offline Активность: 24 июн 2014 13:00
-----

Мои сообщения

В теме: WebDriver. Как узнать завершение выполнения js кода

24 июня 2014 - 12:50

C MathJax оказалось все просто. У него нашелся массивчик в котором он публикует события window.MathJax.Hub.signal.posted, и просто дождался когда он опубликует.

 

Постарому:

selenium.waitForCondition("(typeof window.MathJax === 'undefined') || (window.MathJax.Hub.signal.posted[window.MathJax.Hub.signal.posted.length-1][0]=='End Process')", "240000");

По новому:

driver.manage().timeouts().implicitlyWait(300, TimeUnit.SECONDS);
waitForLoad(driver, "return (typeof MathJax === 'undefined') || (MathJax.Hub.signal.posted[window.MathJax.Hub.signal.posted.length-1][0]=='End Process')");

В теме: WebDriver. Как узнать завершение выполнения js кода

02 июня 2014 - 19:27

Ладно давайте не универсальный. 

Есть какой то JS скрипт, который сделан с нормальным API.

И нам нужно определить что он выполнил все преобразования на странице.

 

Для определенности у меня есть визуализация главы книги с использованием MathJax org

В его настройках есть такой обработчик события

MathJax.Hub.Queue(function () {Message("*** MathJax is done ***")}); 

И вот теперь как мне прикрутить эту конструкцию к Selenium.

По идее должно быть просто, но пока знания у меня в зачаточном состоянии.

 

Как понимаю, нужно запустить эту конструкцию в браузере, чтоб MathJax ее подхватил (я пытаюсь отпрофилировать уже готовые страницы на сервере). И потом какой то флаг считывать в Selenium.

 

Помогите, плиз...