Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Выполнение тестов на удаленной машине, используя Selenium Server


(Руслан) #1

Всем привет, столкнулся с проблемой, хочу со своего компа запустить тесты на ноуте используя Selenium Server.

Выполнил :

java -jar selenium-server-standalone-2.38.0.jar -role hub

java -jar selenium-server-standalone-2.38.0.jar -role node -hub http://localhost:4444/grid/register

На ноуте установил джаву, подключился к компу.

Решил выполнить минимальный набор тестов.

 private Selenium selenium;

    @Before
    public void setUp() throws Exception {
        String hubURL = "http://190.160.130.100:4444/wd/hub";
        DesiredCapabilities capability = DesiredCapabilities.chrome();
        capability.setBrowserName("Google Chrome");
        capability.setPlatform(Platform.valueOf("WIN8"));
      //  capability.setVersion("10.0.9200.16721"); IE win7
  //      capability.setVersion("11.0.1");  //IE win8
        capability.setVersion("31.0.1650.63");         // Chrome Win8
    //    capability.setVersion("25.0.1"); //FireFOx Win8
        selenium = new DefaultSelenium("190.160.130.80", 5555, "*googlechrome /Home/Downloads/chromedriver", "http://www..com/");
        selenium.start();
    }

    @org.junit.Test
    public void testSelenium() throws Exception {
        selenium.open("/");
        selenium.click("link=close");
        selenium.click("link=Sign in");
        selenium.type("id=usernameInput", "");
        selenium.type("id=passInput", "");
        selenium.click("//input[@value='enter']");                    
        selenium.click("//input[@value='Sign in']");
        selenium.type("id=titlebarUsernameInput", "");
        selenium.type("id=titlebarPassInput", "");
        selenium.click("//nav[@id='navigation']/div/ul/li[2]/div/div/form/fieldset/div[3]/input");
        assertEquals("loyalty program", selenium.getText("css=h1.strong-title"));
        selenium.click("css=img[alt=\"The  \"]");
        selenium.waitForPageToLoad("3000");
        selenium.click("link=Ireland");
    }

    @After
    public void tearDown() throws Exception {
        selenium.stop();
    }

В конце-концов , тесты смогли стартовать только на FF и то…частично

кто-то может подсказать, как выполнить на других браузерах, и может подсказать методику, может как-то тесты отличаются …при запуске на компе - всё проходит отлично, нa Remote , валятся?

заранее спасибо


Выбор и конфигурация системы для CI сервера
(Руслан) #2

есть идеи?


(Дмитрий Жарий) #3

@Beliy_Ruslan у вас много деталей, но так и не понятно:

:heavy_exclamation_mark: как и с какой ошибкой у вас валятся тесты?

:heavy_exclamation_mark: для того, чтобы запустить тесты на одной удаленной машине, вам не нужно стартовать весь грид
просто запустите вебдрайвер сервер на удаленной машине

:heavy_exclamation_mark: убедитесь в том, что exe файлы драйверов присутствуют в путях системной переменной PATH. Либо, используйте ключ -Dwebdriver для указания пути к исполнимому фалу драйвера. Путь необходимо указывать даже если драйвер находится в одной папке с селениум-сервером.


(Дмитрий Жарий) #4

@Beliy_Ruslan

Вот пример командной строки для запуска selenium server, так, чтобы был доступен Ie Driver:

start java -Dwebdriver.ie.driver="C:\SomePath\IEDriverServer.exe" -jar selenium-server-standalone-2.37.0.jar

Если путь к папке IEDriverServer.exe уже есть в вашей переменной PATH, то достаточно запустить из командной строки:

start java  -jar selenium-server-standalone-2.37.0.jar

Далее, просто соединяйтесь по URL (если запущен локальной машине):
http://127.0.0.1:4444/wd/hub

в случае, когда сервер запущен на удаленной машине:
http://my-laptop-name:4444/wd/hub

Убедитесь, что Windows Firewall не блокирует запросы.


(Руслан) #5

ошибку выдаёт в “selenium.start();”

java.lang.RuntimeException: Could not start Selenium session: Failed to start new browser session: org.openqa.selenium.server.RemoteCommandException: Error while launching browser
at com.thoughtworks.selenium.DefaultSelenium.start(DefaultSelenium.java:109)
at Test.setUp(Test.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:24)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:74)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:202)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: com.thoughtworks.selenium.SeleniumException: Failed to start new browser session: org.openqa.selenium.server.RemoteCommandException: Error while launching browser
at com.thoughtworks.selenium.HttpCommandProcessor.throwAssertionFailureExceptionOrError(HttpCommandProcessor.java:112)
at com.thoughtworks.selenium.HttpCommandProcessor.doCommand(HttpCommandProcessor.java:106)
at com.thoughtworks.selenium.HttpCommandProcessor.getString(HttpCommandProcessor.java:275)
at com.thoughtworks.selenium.HttpCommandProcessor.start(HttpCommandProcessor.java:237)
at com.thoughtworks.selenium.DefaultSelenium.start(DefaultSelenium.java:100)


(Руслан) #6

по поводу этого, можно поподробней, где и как запускать


(Руслан) #7

имеем
машина с убунту
ноут с вин 8

Запустил на убунте сервер
Запустил на ноуте
start java -Dwebdriver.ie.driver=“C:\SomePath\IEDriverServer.exe” -jar selenium-server-standalone-2.38.0.jar
Что значит просто соединяемся с по URL?
в Intellij Idea я вписал адресс для подключения в ноуту :

selenium = new DefaultSelenium(“190.160.130.80”, 5555, “*googlechrome C:\Server\chromedriver_win32\chromedriver.exe”, “http://www…com/”);

вот тут в адрессе к хрому вообще непонятно что писать…если вписывать , где он на компьютере находится - ошибка

если прописывать , где он на ноуте находится - бесконечная загрузка
в cmd на ноуте выдаёт : “Error while launching browser on session null”

я так понял, проблема именно в пути в драйверу, так как для FF работает запуск


(Дмитрий Жарий) #8

Давайте так:
У вас есть две машины:
WorkstationWindows и WorkstationLinux
Уточните, на какой машине должны запустится тесты, а на какой браузер


(Руслан) #9

запускаю с Linux на удалённый Win8 для IE,Chrome (тут уже хотя бы пока с одним разобраться)


(Дмитрий Жарий) #10

Хорошо, значит конфигурация такая:

WorkstationLinux - пока не просто не трогаем

На WorkstationWindows:

  1. Создаем папку C:\MyWebDriver (очень советую сделать именно так)
  2. В папку MyWebDriver, копируем файлы:
  • chromedriver.exe
  • IEDriverServer.exe
  • selenium-server-standalone-2.38.0.jar
  1. В папке C:\MyWebDriver, создаем bat-файл: run-me.bat, со следующим содержимым:
set IE=-Dwebdriver.ie.driver="%cd%\IEDriverServer.exe"
set CHROME=-Dwebdriver.chrome.driver="%cd%\chromedriver.exe"

java %CHROME% %IE% -jar selenium-server-standalone-2.38.0.jar

  1. Запускаем run-me.bat, и внимательно читаем его консольный вывод

Как видите, в таком случае, написан локальный URL:
http://127.0.0.1:4444/wd/hub

Когда вы будете коннектится из WorkstationLinux, 127.0.0.1 нужно будет заменить на реальный IP или HostName – WorkstationWindows. Но, не сейчас

Теперь на WorkstationWindows откройте веб-браузер и зайдите на страницу
http://127.0.0.1:4444/wd/hub

Попробуйте создать новую сессию Chrome и/или Internet Explorer

Если сессия создалась без проблем, попробуйте приконектится удаленно.

На всякий случай, отключите полностью на WorkstationWindows Windows Firewall


SelenuimGrid+Chrome
Selenium обучение
Тестирование в разной версии IE
(Александр Таранков) #12

Я переместил(а) часть сообщений (3) в новую тему: Проблема с запуском RemoteWebDriver с нужным браузером


Проблема с запуском RemoteWebDriver с нужным браузером
(Александр Таранков) #15

Я переместил(а) часть сообщений (3) в новую тему: Не запускаются тесты: NoClassDefFoundError


Не запускаются тесты: NoClassDefFoundError
(Александр Таранков) #16

Я переместил(а) сообщение в тему: Проблема с запуском RemoteWebDriver с нужным браузером


(Александр Таранков) #18

Я переместил(а) часть сообщений (6) в новую тему: Азы архитектуры фреймворка на PageObjects


(Александр Таранков) #21

Я переместил(а) сообщение в тему: Не запускаются тесты: NoClassDefFoundError