Доброго дня всем! Есть веб-сервер, на нем крутится веб-морда, написанная с использованием java. Эта веб-морда тестируется в разных браузерах(и вручную, и автотестами). Не могу понять, как прописать в автотестах относительные пути к вебдрайверам для ИЕ и Хрома.
Что именно надо проверять?
Если проверять web морду - самое то использовать selenium (к нему для упрощения можно использовать selenide)
С апплетами селениум не поможет. Мы в свое время использовали SikuliX
для их автоматизации.
Главная проблема в том, что я не могу понять, как у webdriver(chrome, ie) - прописать относительные пути и переменные. Т.е., при создании экземпляра chromedriver - мне приходится прописывать полный путь к исполняемому файлу, что крайне негативно влияет на переносимость тестов с одного хоста на другой.
Как это связано с апплетами? Создавайте отдельный вопрос, коммьюнити поделится опытом.
Я проверяю апплет на нескольких браузерх - хром, ие, лисичка. Если я прописываю вебдрайвер хром и ие полными путями к исполняемым файлам, то все работает. Если пытаюсь прописать относительные пути - у меня либо тесты стартуют, но не проходят, либо не находятся вебдрайверы.
Еще раз: ваш тайтл и содержание первого поста совершенно не соответствуют тому, о чем вы сейчас спрашиваете - поиску путей к драйверам. Читаем внимательно FAQ касательно информативности постов. Либо создавайте новую тему, либо отредактируйте изначальный вопрос, заголовок и тэги текущей, чтобы всем было понятно, что же вы на самом деле хотите - автоматизировать работу апплетов, или правильно построить пути к драйверам.
изменил заголовок
Теперь дело за малым - поправить тело первого сообщения. Может конечно вам покажется это не совсем очевидным, но проблема определения путей к драйверам абсолютно никак не связана ни с апплетами, ни с JRE/JDK.
Пропишите путь к драйверам в PATH
не помогает.
@BeforeClass
public static void createAndStartService() throws IOException {
service = new ChromeDriverService.Builder()
.usingDriverExecutable(new File("chromedriver.exe"))
.usingAnyFreePort()
.build();
service.start();
}
не работает. Ему нужен абсолютный путь.
Ну технически, если у вас нет рестрикшена на .exe
файлы в репозитории, то вы можете поместить драйвера прямо в ресурсы проекта. Т.к. ресурсы (maven
) автоматически добавляются в classpath
, вы сможете спокойно указывать относительный путь к драйверам. Но такое скорее всего не будет работать с гридом.
а мне нужно чтобы работало именно и с гридом, и просто на хостовой машине.
Ну грид то вы как-то поставляете на ремуотную тачку? Джарник ведь там сам по себе не появляется, так?
Тогда что вам мешает поставлять драйвера вместе с гридом (рядом в папочке webdrivers
), а затем в скрипте, который поднимает ноду, указать проперти с относительным путем к лежащим рядом драйверам?
pushd %~dp0
java -jar lib/selenium-server-standalone-2.46.0.jar -role node -Dwebdriver.chromedriver=webdrivers/chromedriver.exe -Dwebdriver.ie.driver=webdrivers/IEDriverServer.exe -nodeCondig nodes.json
popd
При этом, в коде вам вообще ничего не придется сетить.
идеал, который от меня требуют - это чтобы данные исполняемые файлы шли вместе со скомпилированным jar файлом автотестов.
Не совсем понял сей затеи. Зачем тесты физически куда-то перемещать? У вас должен быть CI, который все соберет и запустит там, где вам надо. Я вообще слабо представляю, как при работе по какому-нибудь Scrum
вы будете саппортить эти jar файлы?
у меня задача - автотесты для проверки работоспособности апплета при регулярном обновлении JDK-JRE на бета версии. При этом, чтобы можно было скачать 1 скомпилированный jar со сборщика и запустив его на любой машине с жавой - проверить работу системы(предложение №1 в этом посту)
Если у вас есть грид, зачем что-то куда-то качать? Перенаправили запуск на новый / обновленный нод и делов то.
хотят проверять на любой машине
Я честно внимательно прочитал все вопросы-ответы и так и не понял на каком конкретно месте возникла проблема, в упор ее не вижу. Про добавление хромдрайвера в джарник тоже не совсем понял - зачем? Джарник это по-сути обычный архив, в крайнем случае из него конечно можно и вытащить этот бинарник, но опять же - зачем?