Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 使用硒在水豚中创建动态记录不起作用_Database_Cucumber_Capybara - Fatal编程技术网

Database 使用硒在水豚中创建动态记录不起作用

Database 使用硒在水豚中创建动态记录不起作用,database,cucumber,capybara,Database,Cucumber,Capybara,我正试图用selenium驱动程序在水豚上运行我的应用程序的cucumber测试。在测试步骤中,我动态创建用户以登录应用程序。但是我创建的用户登录失败。我已将用户\u事务\u fixture设置为false。创建的记录仍然不可用于selenium应用程序 这是密码 特征文件 @浏览者 场景:管理员可以单独访问管理员页面 给予”admin@example.com“他是管理员 当我以“身份”登录时admin@example.com" 步骤定义文件 给定/“([^\“]*)”是一封管理员/do |电子

我正试图用selenium驱动程序在水豚上运行我的应用程序的cucumber测试。在测试步骤中,我动态创建用户以登录应用程序。但是我创建的用户登录失败。我已将用户\u事务\u fixture设置为false。创建的记录仍然不可用于selenium应用程序

这是密码

特征文件

@浏览者 场景:管理员可以单独访问管理员页面 给予”admin@example.com“他是管理员 当我以“身份”登录时admin@example.com" 步骤定义文件

给定/“([^\“]*)”是一封管理员/do |电子邮件|

user=Email.active.find_by_address(Email).try(:user)| | user.new({},:password=>

'Monkey_123',:password_confirmation=>'Monkey_123',:last_name=>'example',:first_name=>'admin')

user.update_属性(:state,“active”)

user.update_属性(:条款和条件已接受,1)

user.groups电子邮件,:state=>email::state::ACTIVE

:email_type=>email::type::PRIMARY)

user.save

当我使用capybara和selenium driveri运行测试时,我无法使用

通过浏览器创建的用户

我尝试使用ruby调试器,它显示了特定用户的创建

以下是我在env.rb文件中的配置

如果已定义?(ActiveRecord::Base)

开始

结束

结束

Capybara.server_port=9887#或任何您想要的号码

Capybara.app_主机=”http://localhost:#{Capybara.server_port}”

Capybara.default\u wait\u time=4

Capybara.ignore\u hidden\u elements=false

在('@browser')之前 Capybara.current_驱动程序=:selenium 结束

请对此提出解决方案。gems版本为 1) 黄瓜-V0.10.7

2) 黄瓜轨道0.3.2

3) 水豚0.4.1.2

4) 数据库清理器0.5.0


谢谢

我在Cucumber、Capybara和Selenium上遇到了类似的问题。Desive不允许创建的用户登录。在测试期间,Cucumber无法通过浏览器使用创建的用户登录到应用程序。当我将Capybara驱动程序设置为rack_测试时,测试通过,但当我将其设置为Selenium时,它以“Inva”失败在设计的登录页面上显示“lid电子邮件或密码”

最后我找到了答案。当使用事务性装置时,Selenium无法访问已写入数据库的信息。因此,您必须关闭事务性装置,并在配置文件中将DatabaseCleaner策略设置为:truncation.In(在我的例子中,features/support/env.rb和spec/spec_helper.rb)定义了以下内容:在cucumber配置中,features/support/env.rb

DatabaseCleaner.strategy = :truncation
在RSpec配置中
spec/spec\u 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

我没有看到任何问题。我也没有看到任何代码,如果你想让人们知道你做错了什么,这些代码会很有帮助。
RSpec.configure do |config|
  config.use_transactional_fixtures = false
  config.before :each do
    DatabaseCleaner.start
  end
  config.after :each do
    DatabaseCleaner.clean
  end
end