Запущена проблема с запущенным RSpe c и Selenium-Webdriver. Я запускаю свои собственные фреймворки и сталкиваюсь с проблемой после каждого теста. Моя spec_helper.rb
настройка выглядит так:
require 'selenium-webdriver'
Dir['./spec/support/**/*.rb'].each { |file| require file }
RSpec.configure do |config|
config.before(:each) do
# Default browser is chrome, otherwise look for ENV variables
case ENV['browser'] ||= 'chrome'
when 'chrome'
@driver = Selenium::WebDriver.for :chrome
when 'firefox'
@driver = Selenium::WebDriver.for :firefox
end
# Clear cookies between each example
@driver.manage.delete_all_cookies
# Set up implicit waits
@driver.manage.timeouts.implicit_wait = 5
# Default base_url is set to website, otherwise look for ENV variables
case ENV['base_url'] ||= 'https:www.website.com' #redacted real website
when 'local'
ENV['base_url'] = 'local_url_here'
when 'development'
ENV['base_url'] = 'https:www.website.com' #redacted real website
when 'production'
ENV['base_url'] = 'prod_url_here'
end
# Close browser window after each test
config.after(:each) do
@driver.close
end
end
end
Мои настоящие тесты rspe c настроены в формате:
Rspec.describe 'something' do
context 'some context' do
#multiple it 'stuff' do's
end
end
end
Что довольно типично. Однако первый тест будет работать нормально, после первого теста каждый тест работает нормально, но браузер (в данном случае Chromedriver) закрывается после каждого теста и выдает ошибку: Selenium::WebDriver::Error::WebDriverError: no such session
.
Итак, я попытался:
config.after(:all) do
@driver.quit
end
Вместо. При этом все тесты выполняются успешно, но я также получаю n ошибок в конце теста (где n = количество тестов) undefined method
quit 'для nil: NilClass`. Он также открывает новый экземпляр браузера для каждого теста (что я не хочу делать).
RSpe c, кажется, закрывает драйвер от того, что я могу сказать, даже без @driver.quit
. Так что я действительно растерялся, что тут делать. Я не хочу, чтобы новый браузер открывал каждый экземпляр, но я хотел бы, чтобы браузер закрывался после каждого теста и открывал новый (или, может быть, это плохая идея? Я удаляю куки, поэтому, если он просто переключится на новый URL, так как я делаю visit
для каждого теста будет работать?)
Какой лучший способ справиться с этим?