Watir + Огуречное соединение отказано - PullRequest
0 голосов
/ 26 января 2012

Ребята, я использую watir + cucumber в своих тестах, и для каждой функции я повторно использую экземпляр браузера, то есть я создаю экземпляр @@browser = Watir::Browser.new, а затем повторно использую его в своих тестах, которые я использую watir-webdriver, мои тесты работали нормально до сих пор, я просто добавил другой сценарий, и я последовательно получаю следующее сообщение об ошибке:

Connection refused - connect(2) (Errno::ECONNREFUSED)
      /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:560:in `initialize'
      /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:560:in `open'
      /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:560:in `connect'
      /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/timeout.rb:53:in `timeout'
      /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/timeout.rb:93:in `timeout'
      /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:560:in `connect'
      /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:553:in `do_start'
      /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:542:in `start'
      /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:1035:in `request'

Ответы [ 2 ]

0 голосов
/ 08 января 2014

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

Это происходит только с Explorer и Chrome .

В итоге мои выводы таковы:

  • Чтобы закрыть браузер после тестов Cucumber, я использовал глобальный хук at_exit (как рекомендовано в http://cukes.info).
  • Я видел, что и Watir-webdriver (и, вероятно, Selenium) связывают один и тот же хук, чтобы закрыть процесс chomedriver.exe (или аналогичный для IE).
  • после некоторого испытания (возможно, из-за того, что у меня нет глубокого опыта работы с Ruby) я обнаружил, что порядок , который вы используете для цепочки к at_exit, является критическим.

Поскольку событие Exit сигнализируется веб-драйверу, его процессы закрываются, но ваша процедура закрытия выполняется, она пытается сделать то же самое, но находит веб-драйвер закрытым, поэтому возвращает исключение и оставляет программный интерфейс все еще открытым. Итак, вы должны поместить код следующим образом:

    AfterConfiguration do |config|
       yourCodeStartUp()                    # Put your SETUP code here including the launch of webdriver
       at_exit 
           yourCodeTearDown()               # Put your CLOSING routine here
           puts 'stopped'
       end
    end

Таким образом, ваш стандартный код at_exit выполняется до кода Webdriver, и он может корректно завершить работу системы.

0 голосов
/ 28 января 2012

Просто создайте переменную экземпляра с именем @browser в своем файле env.rb, и затем вы сможете получить к ней доступ через @browser в ваших шагах от огурца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...