[FreeWare] Selenium.

elcaste

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

Для тех, кто не в курсе:


Здесь можно взять последние релизы:


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

Я буду первым. Код только для 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);
    }
};

Чистим куки:


Все кто в теме, присоединяемся :)
 
Тестировалось на 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);
}
 
Установка socks-проксика
хттп аналогично - нужно только socks заменить на http

 
  • Нравится
Реакции: BFox
Кстати, в последних билдах для хромовского firefox появилась кроссдоменность :yahoo:
 
Кстати кто-то все-таки пробовал управлять одновременно несколькими десятками браузерами в связке с селениумом?
Т.е. например организовывать многопоточные регистраторы с использованием селениума
Интересует сколько браузеров одновременно получалось заюзать и на каком железе
 
Я пока что больше 3-х не запускал. Сейчас все на стадии тестирования. Но судя по тому, что я вижу - асинхронностью там и не пахнет. Так что, одним запущенным сервером не обойдется.
 
Я пока что больше 3-х не запускал. Сейчас все на стадии тестирования. Но судя по тому, что я вижу - асинхронностью там и не пахнет. Так что, одним запущенным сервером не обойдется.
Т.е. на каждый браузер свой селениум запускать нужно? Дофига ресурсов потребуется
 
Но судя по тому, что я вижу - асинхронностью там и не пахнет. Так что, одним запущенным сервером не обойдется.

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

Выдержка из описания Grid о RC:
You can only run a limited number of concurrent tests on the same remote control before seriously impacting its stability. Practically speaking, launching more than 6 browsers on the same Selenium Remote Control is not advisable. The limitations are even more drastic for Internet Explorer.
Если коротко - говорят о не более 6 браузерах на 1 RC...

Далее о самом Grid...
The Hub allocates Selenium Remote Controls to each test. The Hub is also in charge of routing the Selenese requests from the tests to the appropriate Remote Control as well as keeping track of testing sessions.

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


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