Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.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
Ruby on rails 使用selenium webdriver时,Capybara测试失败_Ruby On Rails_Selenium Webdriver_Rspec_Capybara_Spree - Fatal编程技术网

Ruby on rails 使用selenium webdriver时,Capybara测试失败

Ruby on rails 使用selenium webdriver时,Capybara测试失败,ruby-on-rails,selenium-webdriver,rspec,capybara,spree,Ruby On Rails,Selenium Webdriver,Rspec,Capybara,Spree,我正在尝试测试spree扩展。有些测试是特性测试。这些测试使用SeleniumWebDriver作为javascript驱动程序。 这是我分机的gempec spree_extension.gempec 我正在使用FirefoxV45.0。问题是,尽管Firefox窗口打开并运行测试,但是与javascript(在扩展中定义)交互的功能测试失败了 例如,这里有一个场景: scenario "expect to have a disabled add to cart button" do

我正在尝试测试spree扩展。有些测试是特性测试。这些测试使用SeleniumWebDriver作为javascript驱动程序。 这是我分机的gempec

spree_extension.gempec



我正在使用FirefoxV45.0。问题是,尽管Firefox窗口打开并运行测试,但是与javascript(在扩展中定义)交互的功能测试失败了

例如,这里有一个场景:

scenario "expect to have a disabled add to cart button" do
  visit spree.product_path(product)
  within "div.add-to-cart" do
    expect(page).to have_css('button#add-to-cart-button')
    expect(page.find('button#add-to-cart-button').disabled?).to be_truthy  # <= This test here is failing
  end
end
场景“希望禁用“添加到购物车”按钮
访问spree.product_路径(产品)
在“div.add-to-cart”中
期望(第页)有_css(#按钮#添加到购物车按钮#)

期望(page.find('button#add to cart button').disabled?)。说实话,好吧,所以我找出了问题所在。生成虚拟应用程序时未运行生成器。lib目录中的生成器必须放在install目录中。 所以目录结构必须是

lib
 -> generators
   -> *extension_name*
     -> install
       -> install_generator.rb 

此时,用于测试的虚拟应用程序将看到要运行的生成器。

您是否在场景的祖先上指定了“js:true”元数据?如果没有,请尝试将其添加到scenario@ThomasWalpole是的,我正在使用js:true,就像这个
功能“产品变体选项”,js:true do#scenarios end
您正在使用的FF非常旧-您确定它不会在浏览器控制台中引发任何js错误吗?此外,与您的两个期望不同,您应该只编写类似于
expect(第页)的内容。要有_按钮('add-to-cart-button',disabled:true)
。注意:这一切都假设您实际上是将
disabled
属性添加到按钮以禁用它,而不仅仅是添加一个将其样式设置为禁用的类。
scenario "expect to have a disabled add to cart button" do
  visit spree.product_path(product)
  within "div.add-to-cart" do
    expect(page).to have_css('button#add-to-cart-button')
    expect(page.find('button#add-to-cart-button').disabled?).to be_truthy  # <= This test here is failing
  end
end
lib
 -> generators
   -> *extension_name*
     -> install
       -> install_generator.rb