我正试图用硒驱动器对我的app进行黄瓜测试。在测试步骤中,我动态创建用户以登录应用程序。但是用户登录失败了我创建的用户。我已将user_transaction__ture设置为false。创建的记录仍然不适用于selenium应用程序。
这是代码
特征文件
@browser 场景:仅管理员可以访问管理页面 鉴于“admin@example.com”是管理员 当我以“admin@example.com”身份登录时 步骤定义文件
给出/“([^ \”] *)“是admin / do | email |
user = Email.active.find_by_address(email).try(:user)|| User.new({},:password =>
'Monkey_123',:password_confirmation => 'Monkey_123',:last_name => 'example',:first_name => '管理员')
user.update_attribute(:state,“active”)
user.update_attribute(:terms_and_conditions_accepted,1)
user.groups<< Group.find(1)
user.primary_email || = Email.new(:address => email,:state => Email :: State :: ACTIVE,
:email_type =>电子邮件::类型:: PRIMARY)
user.save!
当我使用capybara运行测试时,selenium driveri无法使用
登录我的应用程序通过浏览器创建的用户。
我尝试使用ruby调试器,它显示了特定用户的创建。
以下是我在env.rb文件中的配置
如果已定义?(ActiveRecord :: Base)
开始
require 'database_cleaner'
DatabaseCleaner.strategy = :truncation
rescue LoadError => ignore_if_database_cleaner_not_present
端
端
Capybara.server_port = 9887#或者你想要的任何数字?
Capybara.app_host =“http:// localhost:#{Capybara.server_port}”
Capybara.default_wait_time = 4
Capybara.ignore_hidden_elements =假
之前('@ browser')做 Capybara.current_driver =:selenium 端
请为此提出解决方案。宝石版本是 1)黄瓜-v 0.10.7
2)黄瓜导轨0.3.2
3)Capybara 0.4.1.2
4)database_cleaner 0.5.0
谢谢
答案 0 :(得分:1)
我和Cucumber,Capybara和Selenium有类似的问题。以某种方式设计不允许登录创建的用户。在测试期间,Cucumber无法通过浏览器使用创建的用户登录应用程序。当我将Capybara驱动程序设置为rack_test时,测试通过,但是当我将其设置为selenium时,它失败并显示“电子邮件或密码无效”。在Devise的登录页面上。
最后,我找到了答案here和here。使用事务夹具时,Selenium无法访问已写入数据库的信息。因此,您必须关闭事务夹具并将DatabaseCleaner策略设置为:截断。在您的配置文件中(在我的案例中为feature / support / env.rb和spec / spec_helper.rb)定义以下内容:在cucumber配置features / support / env.rb
DatabaseCleaner.strategy = :truncation
并在RSpec配置中spec/spec_helper.rb
RSpec.configure do |config|
config.use_transactional_fixtures = false
config.before :each do
DatabaseCleaner.start
end
config.after :each do
DatabaseCleaner.clean
end
end