2014-02-03 4 views
2

Я пытаюсь перейти от запуска моего сервера и клиента Selenium от всех на моем Mac, к тому, что серверы работают в Vagrant VM, а клиенты работают локально на моем Mac.Запуск селеновой сетки через бродягу

Я использую Vagrant 1.4.3, работающий на Mac OS X 10.9.1, чтобы запустить виртуальную машину Ubuntu 13.10. После запуска виртуальной машины я устанавливаю Java, Node.js и несколько других зависимостей, которые необходимы для моей тестовой среды. После установки Selenium 2.39.0 (самое последнее на момент написания этой статьи), здесь приведены соответствующие конфигурации.


I SSH в мой Бродячей VM и выполните следующее:

java -jar /usr/local/bin/selenium-server-standalone-*.jar \ 
    -role hub \ 
    -trustAllSSLCertificates \ 
    -hubConfig /vagrant/hub.json 

/vagrant на картах VM в корне моего каталога проекта на моем локальном компьютере. Вот соответствующая конфигурация из моего Vagrantfile.

config.vm.box = "saucy64" 
config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/saucy/20140202/saucy-server-cloudimg-amd64-vagrant-disk1.box" 
# ... 
config.vm.define "testing" do | test | 
    test.vm.network :forwarded_port, guest: 3444, host: 4444 
    test.vm.network :private_network, ip: "192.168.50.6" 
    # ... 
end 

Вот концентратор конфигурации, что Selenium Grid Hub используется на Бродячей VM. Selenium Hub использует порт 3444 внутри виртуальной машины, который переносится на 4444 вне виртуальной машины, обращаясь к моему Mac.

{ 
    "browserTimeout": 180000, 
    "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher", 
    "cleanUpCycle": 2000, 
    "maxSession": 5, 
    "newSessionWaitTimeout": -1, 
    "nodePolling": 2000, 
    "port": 3444, 
    "throwOnCapabilityNotPresent": true, 
    "timeout": 30000 
} 

Вот как я запустить Selenium на моем Mac в качестве узла.

java -jar selenium-server-standalone-*.jar \ 
    -role node \ 
    -trustAllSSLCertificates \ 
    -nodeConfig node.mac.json 

А вот узел конфигурации, который пытается поговорить с Хаб работает внутри Vagrant.

{ 
    "capabilities": [ 
     { 
      "platform": "MAC", 
      "seleniumProtocol": "WebDriver", 
      "browserName": "firefox", 
      "maxInstances": 1 
     }, 
     { 
      "platform": "MAC", 
      "seleniumProtocol": "WebDriver", 
      "browserName": "chrome", 
      "maxInstances": 1 
     } 
    ], 
    "configuration": { 
     "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy", 
     "hubHost": "127.0.0.1", 
     "hubPort": 4444, 
     "hub": "http://127.0.0.1:4444/grid/register", 
     "maxSession": 1, 
     "port": 4445, 
     "register": true, 
     "registerCycle": 2000, 
     "remoteHost": "http://127.0.0.1:4445", 
     "role": "node", 
     "url": "http://127.0.0.1:4445" 
    } 
} 

Наконец, вот что я получаю в терминале на стороне Mac.

Feb 02, 2014 9:29:07 PM org.openqa.grid.selenium.GridLauncher main 
INFO: Launching a selenium grid node 
21:29:18.706 INFO - Java: Oracle Corporation 24.51-b03 
21:29:18.706 INFO - OS: Mac OS X 10.9.1 x86_64 
21:29:18.713 INFO - v2.39.0, with Core v2.39.0. Built from revision ff23eac 
21:29:18.773 INFO - Default driver org.openqa.selenium.ie.InternetExplorerDriver registration is skipped: registration capabilities Capabilities [{platform=WINDOWS, ensureCleanSession=true, browserName=internet explorer, version=}] does not match with current platform: MAC 
21:29:18.802 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4445/wd/hub 
21:29:18.803 INFO - Version Jetty/5.1.x 
21:29:18.804 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver] 
21:29:18.804 INFO - Started HttpContext[/selenium-server,/selenium-server] 
21:29:18.804 INFO - Started HttpContext[/,/] 
21:29:18.864 INFO - Started [email protected] 
21:29:18.864 INFO - Started HttpContext[/wd,/wd] 
21:29:18.866 INFO - Started SocketListener on 0.0.0.0:4445 
21:29:18.867 INFO - Started [email protected] 
21:29:18.867 INFO - using the json request : {"class":"org.openqa.grid.common.RegistrationRequest","capabilities":[{"platform":"MAC","seleniumProtocol":"WebDriver","browserName":"firefox","maxInstances":1},{"platform":"MAC","seleniumProtocol":"WebDriver","browserName":"chrome","maxInstances":1},{"platform":"MAC","seleniumProtocol":"WebDriver","browserName":"iphone","maxInstances":1},{"platform":"MAC","seleniumProtocol":"WebDriver","browserName":"ipad","maxInstances":1}],"configuration":{"nodeConfig":"node.mac.json","port":4445,"host":"192.168.50.1","hubHost":"127.0.0.1","registerCycle":2000,"trustAllSSLCertificates":"","hub":"http://127.0.0.1:4444/grid/register","url":"http://127.0.0.1:4445","remoteHost":"http://127.0.0.1:4445","register":true,"proxy":"org.openqa.grid.selenium.proxy.DefaultRemoteProxy","maxSession":1,"role":"node","hubPort":4444}} 
21:29:18.868 INFO - Starting auto register thread. Will try to register every 2000 ms. 
21:29:18.868 INFO - Registering the node to hub :http://127.0.0.1:4444/grid/register 
21:30:25.079 INFO - Registering the node to hub :http://127.0.0.1:4444/grid/register 
21:31:31.254 INFO - Registering the node to hub :http://127.0.0.1:4444/grid/register 
21:32:35.416 INFO - Registering the node to hub :http://127.0.0.1:4444/grid/register 
21:33:41.581 INFO - Registering the node to hub :http://127.0.0.1:4444/grid/register 
21:34:47.752 INFO - Registering the node to hub :http://127.0.0.1:4444/grid/register 
21:35:51.908 INFO - Registering the node to hub :http://127.0.0.1:4444/grid/register 
21:36:56.045 INFO - Registering the node to hub :http://127.0.0.1:4444/grid/register 
21:38:00.189 INFO - Registering the node to hub :http://127.0.0.1:4444/grid/register 

Наконец, вот что я получаю в Терминале на стороне Бродящей ВМ.

Feb 03, 2014 5:28:53 AM org.openqa.grid.selenium.GridLauncher main 
INFO: Launching a selenium grid server 
2014-02-03 05:28:54.780:INFO:osjs.Server:jetty-7.x.y-SNAPSHOT 
2014-02-03 05:28:54.811:INFO:osjsh.ContextHandler:started o.s.j.s.ServletContextHandler{/,null} 
2014-02-03 05:28:54.823:INFO:osjs.AbstractConnector:Started [email protected]:3444 
Feb 03, 2014 5:29:20 AM org.openqa.grid.selenium.proxy.DefaultRemoteProxy isAlive 
WARNING: Failed to check status of node: Connection refused 
Feb 03, 2014 5:29:22 AM org.openqa.grid.selenium.proxy.DefaultRemoteProxy isAlive 
WARNING: Failed to check status of node: Connection refused 
Feb 03, 2014 5:29:22 AM org.openqa.grid.selenium.proxy.DefaultRemoteProxy onEvent 
WARNING: Marking the node as down. Cannot reach the node for 2 tries. 
Feb 03, 2014 5:29:24 AM org.openqa.grid.selenium.proxy.DefaultRemoteProxy isAlive 
WARNING: Failed to check status of node: Connection refused 
Feb 03, 2014 5:29:26 AM org.openqa.grid.selenium.proxy.DefaultRemoteProxy isAlive 
WARNING: Failed to check status of node: Connection refused 
Feb 03, 2014 5:29:28 AM org.openqa.grid.selenium.proxy.DefaultRemoteProxy isAlive 
WARNING: Failed to check status of node: Connection refused 
Feb 03, 2014 5:29:30 AM org.openqa.grid.selenium.proxy.DefaultRemoteProxy isAlive 
WARNING: Failed to check status of node: Connection refused 
Feb 03, 2014 5:29:32 AM org.openqa.grid.selenium.proxy.DefaultRemoteProxy isAlive 
WARNING: Failed to check status of node: Connection refused 

Google ничего не возвращает полезности в данной ситуации. Может ли кто-нибудь помочь мне определить, почему концентратор и узел не могут разговаривать друг с другом?

ответ

0

Я не слишком много знаю о Selenium, но я думаю, проблема заключается в использовании 127.0.0.1. Особенно VM не имеет возможности подключения к хосту, а не вперед порт 4445

Как вы уже указать private_network адрес (192.168.50.6), вы можете попробовать использовать его непосредственно без какого-либо порта пересылка.

+0

Nope. Я использовал IP-адреса в частной сети (192.168.50.1 и 192.168.50.6) безрезультатно. –

+0

Означает ли это, что вы пытались установить значение «host» в конфигурации узла? Если вы не установите его, концентратор попытается угадать его, откуда возникла связь. Предполагая, что это 127.0.0.1, концентратор попытается поговорить с узлом на 127.0.0.1, который не будет работать из-за двух разных контекстов localhost. – nirvdrum

+0

Альтернатива здесь заключается в том, установлен ли на вашем Mac брандмауэр, который блокирует доступ к порту 4445 из внешнего мира. – nirvdrum

1

У меня есть аналогичная установка, где мой сервер selenium (aka hub) находится на удаленном vm, а клиент (aka node) находится на моей локальной машине.Я видел ту же ошибку:

Feb 04, 2014 5:29:22 PM org.openqa.grid.selenium.proxy.DefaultRemoteProxy isAlive 
WARNING: Failed to check status of node: Connection refused 
Feb 04, 2014 5:29:22 PM org.openqa.grid.selenium.proxy.DefaultRemoteProxy onEvent 
WARNING: Marking the node as down. Cannot reach the node for 2 tries. 

Я говорил с нашей командой Ops, и они сказали мне, что мой VM сидит в другой сети, так и в другом месте. И хотя узел-узел способен достичь концентратора, но концентратор никогда не может достичь узла. Они предложили получить еще одну виртуальную машину, которая сидит в той же сети. Это как улица в одну сторону. Надеюсь, это поможет.

+0

Итак, если я хочу запускать свои тесты в iOS Simulator, мне нужно настроить вторую коробку Vagrant с OS X? Это так, хотя я использую сопоставление портов (через Vagrant) и/или используя IP-адреса в частной сети? –

0

Первый ответ был частично правильным. Вы должны убедиться, что путь связи между узлом и сервером и сервером к узлу ясен и способен подключаться к конкретным портам. Так как технически вы используете 2 сервера, сервер на узле прослушивает 1 порт и сервер на концентраторе, слушая другой порт.

Попробуйте это: У меня была такая же проблема, но фиксировано, добавив поле хоста:

«хозяин»: [IP или имя хоста узла],

Вот мой файл узла конфигурации:

{ 
    "capabilities":[ 
     { 
      "platform":"MAC", 
      "browserName":"firefox", 
      "version":"28", 
      "maxInstances":1 
     }, 
     { 
      "platform":"MAC", 
      "browserName":"chrome", 
      "version":"34", 
      "maxInstances":1 
     } 
    ], 
    "configuration":{ 
     "port": 5556, 
     "hubPort": 5555, 
     "host": 10.50.10.101, //this is the ip of my node 
     "hubHost":"10.50.10.100", //this is ip of my grid hub 
     "nodePolling":2500, 
     "registerCycle":10500, 
     "register":true, 
     "cleanUpCycle":2500, 
     "maxSession":5, 
     "role":"node" 
    } 
} 
Смежные вопросы