Показать сообщение отдельно
  #3 (permalink)  
Старый 03.06.2011, 14:43
Новичок на форуме
Отправить личное сообщение для compasses Посмотреть профиль Найти все сообщения от compasses
 
Регистрация: 02.06.2011
Сообщений: 3

Разобрался. Сделал. Если кому надо будет:
Selenium.prototype.doAllLinks = function( locate ) {

    wnd=open(locate, "displayWindow", "width=500,height=400,status=yes,toolbar=yes,menubar=yes");
    alert("Find all links and click them");
    for (var i = 0; i < wnd.document.links.length; i++) {
          getTopWin().getBrowser().addTab(wnd.document.links[i]);  
	}
}

function getTopWin ()
{
    var windowManager = Components. classes ['@mozilla.org/appshell/window-mediator;1']. getService();
    var windowManagerInterface = windowManager.
                                 QueryInterface (Components. interfaces. nsIWindowMediator);
    var topWindowOfType = windowManagerInterface. getMostRecentWindow ("navigator:browser");
    
    if (topWindowOfType)
    {
        return topWindowOfType;
    }
    return null;
}


Вопрос возник:
wnd=open(locate, "displayWindow", "width=500,height=400,status=yes,toolbar=yes,menubar=yes");
    alert("Find all links and click them");
    for (var i = 0; i < wnd.document.links.length; i++) {

Если убрать строку
alert("Find all links and click them");

То страница не успевает загрузиться и wnd.document.links.length = 0;
Есть ли более красивый способ подождать? Читал про setTimeout и setInterval - они не подходят, так как все это управляется под selenium, а селениум некоторые js функции не всегда адекватно воспринимает.

Последний раз редактировалось compasses, 03.06.2011 в 14:49.
Ответить с цитированием