Tag: 水豚

如何在不删除`test`数据库数据的情况下测试JavaScripts?

我使用Ruby on Rails 3.2.2,cucumber-rails-1.3.0,rspec-rails-2.8.1和capybara-1.1.2。 我想使用Selenium来测试JavaScripts,但是每次在终端窗口中运行cucumber命令行时都不要删除test数据库数据。 也就是说,如果我声明如下function: Feature: … @javascript Scenario: … JavaScript也经过了预期的测试。 但是,在测试运行后, test数据库数据将被删除,我必须再次为该数据库播种,以便正确运行新测试。 我阅读了官方文档和ROOT_APP/features/support/env.rb文件中的文本(似乎我安装了所有必需的Rubygem – 请参阅下面有关我正在使用的Gemfile的更多信息)但我没有了解如何避免删除数据库数据以及如何配置Cucumber和Capybara gems以便正确使用Selenium。 我该怎么办? 注意I :我想制作上述内容,因为我想在“测试”/“运行”场景时拥有相同的test数据库数据 。 注意二 :为了在test数据库中播种数据(我的应用程序需要该数据工作),我在RAILS_ROOT_PATH/lib/tasks/cucumber.rake文件中添加以下代码,然后运行rake db:test:prepare命令终端窗口中的行。 namespace :db do namespace :test do task :prepare => :environment do Rake::Task[“db:seed”].invoke end end end 在ROOT_APP/features/support/env.rb文件中,我试图取消注释以下两个代码块( BTW :我从未更改由cucumber-rails gem自动生成的原始文件,因此它是默认的),但在运行测试后,它仍然删除test数据库数据。 # Before(‘@no-txn,@selenium,@culerity,@celerity,@javascript’) do # # { :except => [:widgets] } may […]

如何获得水豚的隐藏元素值?

我需要获得隐藏元素的值。 我尝试了以下代码: page.find(:xpath, “//span[@id=’sample’]”).text 它返回零。

在教程中使用rspec在rails上测试ruby时出错

我是ruby on rails的新手我只是在阅读http://ruby.railstutorial.org/chapters/static-pages#top作为教程说,我创建了sample_app包或项目。 现在在3.2.1节我正在测试应用程序。 首先,我从cmd运行以下命令 $ rails generate integration_test static_pages 这在spec / requests目录中创建了static_pages_spec.rb。 现在在spec / requests / static_pages_spec.rb中添加以下代码 require ‘spec_helper’ describe “Static pages” do describe “Home page” do it “should have the content ‘Sample App'” do visit ‘/static_pages/home’ expect(page).to have_content(‘Sample App’) end end end 在这个阶段,我在sample_app / spec / spec_helper.rb文件中添加以下代码 config.include Capybara::DSL 所以我的文件看起来像 # This file […]

如何将Capybara纳入Cucumber项目的模块中

我定义了一个模块: module Support include Capybara::DSL def self.do_something click_link ‘Questions’ end end 它位于features / support / support.rb 我的env.rb: require ‘capybara’ require ‘cucumber’ require ‘capybara/cucumber’ Capybara.app_host = “http://www.stackoverflow.com” Capybara.run_server = false Capybara.default_driver = :selenium 我在steps.rb中调用模块的function: Support::do_something 我有例外: undefined method `click_link’ for Support:Module (NoMethodError) 如何在支持模块中提供Capybara?

在水豚的多个会话

背景 我想测试我的webapp上的多个用户登录,我使用黄瓜和水豚来做这件事。 我找到了关于如何处理多个会话的这个链接 ,但不幸的是,它看起来不像黄瓜可以找到定义的in_session方法。 我该如何访问它? 黄瓜情景 Given I go to teacher login in Steve’s browser When I enter “Steve” in the username field And I enter “StevesPassword” in the password field And I click login Then I should see “Steve Lastname” as the current user When I go to teacher login in Lisa’s browser And […]

紧跟在h3之后的文本框的CSS选择器路径,带有文本“公司名称”

下面是我的HTML Company Name Full Company Legal Name Company Phone Federal Tax / Employer ID (EIN) 由于所有文本字段和各个父div 类属性的类值相同,我需要填充这些文本字段而不使用nth-of-type。 我已经完成了创建一个CSS选择器的工作,该选择器应该指向 Full Company Legal Name 之后的文本框。 h3:包含(^公司名称$)+ div>输入 但我的Capybara脚本没有认识到上述方法并抛出以下错误。 annotateInvalidSelectorError_’:给定的选择器h3:包含(^ Company Name $)+ div> input无效或不导致WebElement。 发生以下错误:(Selenium :: WebDriver :: Error :: InvalidSelectorError)InvalidSelectorError:指定了无效或非法的选择器 任何人都可以提供符合我要求的CSS吗? 此致,Avinash Duggirala

如何动态地将部分添加到SitePrism页面对象?

我正在使用SitePrism来测试我的Web应用程序。 我有许多扩展SitePrism::Page的类,许多经常使用的HTML片段由扩展SitePrism::Section匹配类表示 class Login < SitePrism::Section element :username, "#username" element :password, "#password" element :sign_in, "button" end class Home < SitePrism::Page section :login, Login, "div.login" end 问题是,我正在处理的应用程序基于CMS,其中可以通过基于预定义内容选择模板然后将任意数量的可用组件拖放到页面上来组装页面。 初始开发人员创建了一个页面对象来镜像每个可用的模板 。 只要测试数量很少并且我们不得不在我们的function文件中测试的页面变体太多,这就没问题了。 随着多个测试用例的增加,页面对象开始以惊人的速度增长。 虽然我们可以通过为CMS中可用的每个组件定义Sections并在页面对象中重用它们来轻松减轻代码重复,但是很多属性很少被使用。 class BlogPost < SitePrism::Page section :logo, MySite::Components::Logo, '.logo' section :navigation, MySite::Components::Navigation, '.primary-navigation' section :header, MySite::Components::BlogHeader, '.header' section :introduction, MySite::Components::Text, '.text .intro' # and so […]

如何使用无头铬与水豚和selenium

Chrome版本:59.0.3071.104 使用Cucumber,Capybara,Selenium实现无头Chrome的自动化测试。 function/支持/ env.rb require ‘rubygems’ require ‘capybara/cucumber’ Capybara.register_driver :selenium_chrome do |app| Capybara::Selenium::Driver.new(app, :browser => :chrome, args: [‘headless’]) end Capybara.default_driver = :selenium_chrome 在进行黄瓜测试时,它说: 警告Selenium [DEPRECATION]:不推荐使用args或:开关。 请改用Selenium :: WebDriver :: Chrome :: Options#add_argument。 使用Headless Chrome的水豚和selenium的正确方法是什么? 谢谢。 编辑1:我尝试使用Ruby-Binding , Capybara和工作示例进行以下操作 。 但它也会产生错误。 require ‘rubygems’ require ‘capybara/cucumber’ require ‘selenium-webdriver’ Capybara.register_driver :selenium_chrome do |app| options = Selenium::WebDriver::Chrome::Options.new options.add_argument(‘–headless’) driver […]

Capybara的have_selector有哪些选择?

我在RSpec中遇到了这个错误。 是否有任何针对have_selector文档可以解释选项哈希中的每个键以及它究竟是做什么的? invalid keys :content, should be one of :text, :visible, :between, :count, :maximum, :minimum, :exact, :match, :wait

在rake任务中运行capybara

如何在Rake任务中运行Capybarafunction? 例如: visit(‘http://google.com’) 谢谢!