Сегодня я столкнулся с той же проблемой, и потратил лот времени на ее анализ.
Это происходит только с 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, и он может корректно завершить работу системы.