[FreeWare] Selenium.

Тема в разделе "SEO Скрипты", создана пользователем elcaste, 25 янв 2009.

  1. elcaste

    elcaste

    Регистр.:
    30 ноя 2007
    Сообщения:
    322
    Симпатии:
    175
    Selenium - это пакет для тестирования веб приложений, но его можно использовать не только для этого :-]. Штука невероятно гибкая, но и часто глючная :). iMacros отдыхает.

    Для тех, кто не в курсе:
    http://seleniumhq.org/about/

    Здесь можно взять последние релизы:
    http://seleniumhq.org/download/

    Предлагаю в этой теме постить улучшения и доработки к нему.

    Я буду первым. Код только для Firefox в режиме Chrome, из консоли он запускается так
    Код:
    cmd=getNewBrowserSession&1=*chrome&2=http://www.google.com
    По HTTP запускается так
    Код:
    http://localhost:4444/selenium-server/driver/?cmd=getNewBrowserSession&1=*chrome&2=http://www.google.com
    :

    Чистим кеш:

    Код:
    Selenium.prototype.getClrcache = function() {
        try { 
            if (browserVersion && browserVersion.isChrome) { 
                       var cacheClass = Components.classes["@mozilla.org/network/cache-service;1"];
                       var cacheService = cacheClass.getService(Components.interfaces.nsICacheService);
                      cacheService.evictEntries(Components.interfaces.nsICache.STORE_ON_DISK);
                      cacheService.evictEntries(Components.interfaces.nsICache.STORE_IN_MEMORY); 
             }//TODO: other browser & mode
        } catch (e) {
           throw new SeleniumError("Threw an exception: " + e.message);
        }
    };
    Чистим куки:

    Код:
    Selenium.prototype.getClrcook = function() {
        try { 
            if (browserVersion && browserVersion.isChrome) { 
               var proxy22Class = Components.classes["@mozilla.org/cookiemanager;1"].getService(Components.interfaces.nsICookieManager);
    	proxy22Class.removeAll();
             }
        } catch (e) {
           throw new SeleniumError("Threw an exception: " + e.message);
        }
    };
    Все кто в теме, присоединяемся :)
     
    stargazerrrrr, Zogr и pk2002 нравится это.
  2. Zerrikanez

    Zerrikanez Прохожие

    Тестировалось на Firefox 2.0.20 в режиме chrome.
    Включаем/отключаем Javascript:
    Код:
    Selenium.prototype.doDisableJavascript = function() {    setJavascriptPref(false);};
    Selenium.prototype.doEnableJavascript = function() {    setJavascriptPref(true);};
    function setJavascriptPref(bool) {
        prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
        prefs.setBoolPref("javascript.enabled", bool);
    }
    
     
  3. pk2002

    pk2002

    Регистр.:
    14 ноя 2006
    Сообщения:
    382
    Симпатии:
    350
    Установка socks-проксика
    хттп аналогично - нужно только socks заменить на http


    Код:
    Selenium.prototype.doSetProxy = function(host, port) {
        try {
            if (browserVersion && browserVersion.isChrome) {
                var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch('');
                prefs.setIntPref("network.proxy.type", 1);
                prefs.setCharPref("network.proxy.socks", host);
                prefs.setIntPref("network.proxy.socks_port", port);
             }
        } catch (e) {
            throw new SeleniumError("Threw an exception: " + e.message);
        }
    };
    
     
    BFox нравится это.
  4. elcaste

    elcaste

    Регистр.:
    30 ноя 2007
    Сообщения:
    322
    Симпатии:
    175
    Кстати, в последних билдах для хромовского firefox появилась кроссдоменность :yahoo:
     
  5. pk2002

    pk2002

    Регистр.:
    14 ноя 2006
    Сообщения:
    382
    Симпатии:
    350
    Кстати кто-то все-таки пробовал управлять одновременно несколькими десятками браузерами в связке с селениумом?
    Т.е. например организовывать многопоточные регистраторы с использованием селениума
    Интересует сколько браузеров одновременно получалось заюзать и на каком железе
     
  6. elcaste

    elcaste

    Регистр.:
    30 ноя 2007
    Сообщения:
    322
    Симпатии:
    175
    Я пока что больше 3-х не запускал. Сейчас все на стадии тестирования. Но судя по тому, что я вижу - асинхронностью там и не пахнет. Так что, одним запущенным сервером не обойдется.
     
  7. pk2002

    pk2002

    Регистр.:
    14 ноя 2006
    Сообщения:
    382
    Симпатии:
    350
    Т.е. на каждый браузер свой селениум запускать нужно? Дофига ресурсов потребуется
     
  8. elcaste

    elcaste

    Регистр.:
    30 ноя 2007
    Сообщения:
    322
    Симпатии:
    175
    Да не так уж и много: +11 метров на один инстанс.
     
  9. Zerrikanez

    Zerrikanez Прохожие

    Использовался Selenium RC? Или Selenium Grid?

    Выдержка из описания Grid о RC:
    Если коротко - говорят о не более 6 браузерах на 1 RC...

    Далее о самом Grid...
    Т.е. грубо говоря там все так: 1 тест = 1 RC(1 браузер?)
    Соответственно можно запустить 1 Grid и посылать ему Х-количество тестов, которые будут работать паралельно... но это все в теории, из того что я понял из документации..
     
  10. elcaste

    elcaste

    Регистр.:
    30 ноя 2007
    Сообщения:
    322
    Симпатии:
    175
    RC. Даже если стабильной будет только схема 1_сервер-1_браузер, то это в любом случае стабильней чем хваленный хуман, у которого мало того, что куки и кеш одни на всех, так еще и перезапуститься нормально не может.


    Никто не использовал с DragAndDropToObject - у меня отказывается работать, пишет что объект не найден, хотя с синтаксисом по DOM все в порядке?