Решил я значит посмотреть на javascript версию WebDriver. Так для своего интереса.
Нет, лукавлю, не для интереса. Была надежда на то что скрипт можно будет запускать прямо из браузера для автоматизации внутри этого же браузера !
Моим надеждам не суждено было оправдаться.....
Кратко расскажу почему.
1. Компиляция WebDriverJs.
Следую инструкции
отсюда начал компиляцию, в процессе которой вылезла ошибка недостаточного heap для явы.
Для ее исправления правим файл go.bat
Полученная строка будет выглядеть так:
java -Xmx512m -XX:MaxPermSize=284m -XX:ReservedCodeCacheSize=128m -client -jar third_party\jruby\jruby-complete.jar -X-C -S rake %*
Теперь запуск команды
>go webdriverjs
проходит успешно. На выходе в папке build мы получаем папку с webdriver.js файлом.
Этот файл и есть нужная нам библиотека.
2.Использование
Первые попытки запуска примеров потерпели неудачу. После недельных изысканий и выноса мозга свои коллегам было найдено наконец решение.
В файле библиотеки необходимо заменить последнюю строку на следующую:
;for(var key in webdriver)this[key]=webdriver[key];delete this.webdriver;}).call(typeof exports!=='undefined'&&exports===this?exports:this.webdriver=this.webdriver||{})
После этого все примеры начали работать.
3.Разочарование
Больше всего надежд я возлагал на метод использования описанный тут
Controlling the Host Browser
Launching a browser to run a WebDriver test against another browser is a tad redundant (compared to simply using
node).
Instead, using WebDriverJS in the browser is intended for automating
the browser actually running the script. This can be accomplished as
long as the URL for the server and session ID for the browser are known.
While these values may be passed to the builder directly, they may also
be defined using the
wdurl and
wdsid "environment variables", which are parsed from the loading page's URL query data:
<!-- Assuming HTML URL is /test.html?wdurl=http://localhost:4444/wd/hub&wdsid=foo1234 -->
<!DOCTYPE html>
<script src="webdriver.js"></script>
<input id="input" type="text"/>
<script>
// Attaches to the server and session controlling this browser.
var driver = new webdriver.Builder().build();
var input = driver.findElement(webdriver.By.tagName('input'));
input.sendKeys('foo bar baz').then(function() {
assertEquals('foo bar baz',
document.getElementById('input').value);
});
</script>
Казалось бы все круто... Мы открываем браузер и нашу страницу test.html и тест
сразу же начинает выполняться...
Но не тут то было!!!
Для начала нам необходимо передать параметры хоста где запущен сервер и сессию для
которой все это делать
то есть результирующий урл запуска будет:
/test.html?wdurl=http://localhost:4444/wd/hub&wdsid=foo1234
Выяснилась еще одна проблема, как создать сессию ... так как сам новую сессию он не
включает. ((((
Ну хорошо, для создания сессии идем на хост где запущен сервер
http://localhost:4444/wd/hub/static/resource/hub.html
нажимаем Create Session, выбираем браузер...
У нас запускается браузер и мы видим сессию в которой он запущен
Отлично берем сессию и вставляем его как параметр нашей страницы
результирующий урл запуска будет:
/test.html?wdurl=http://localhost:4444/wd/hub&wdsid=1334043676191
или что-то типа того.
Снова запускаем наш тест... и.... опять провал !!!! почему ?
да потому что тест наш надо запускать в браузере запущенном самим сервером, так
как в нем установлено дополнение которое взаимодействует с сервером.
Хорошо, запустим там.... вуаля ... все сработало как надо ...
Но это не то что я искал, я надеялся что сервер в этом процессе участвовать не
будет и браузер где мы запускаем тесты может быть на машине клиента... А так он
все равно на стороне сервера.
Разочарование ((((