【问题标题】:Standalone testing using ruby 1.9.2, selenium-client and rspec (without rails)使用 ruby​​ 1.9.2、selenium-client 和 rspec(没有 rails)进行独立测试
【发布时间】:2011-07-29 12:33:06
【问题描述】:

有没有人成功设置了一个独立的环境来使用 ruby​​ 1.9.2、selenium-client 和 rspec 来测试 NON-RAILS 网站。

我已经在网上搜索过,但我似乎无法获得神奇的公式。有 gem 版本冲突,缺少库等。此时我完全糊涂了。

基本问题:我有许多使用 SeleniumIDE 1.0.10 用于非 RAILS 应用程序 (IIS/ASP) 的测试套件和测试。我只是想使用 SeleniumIDE 可以提供的转换后的测试,并使用 ruby​​ 或更好的 rake 运行它们。 (请注意,SeleniumIDE 可以创建 RSpec 或测试/单元测试,我很乐意让它们工作)。

据我了解,selenium-client 具有启动/停止 SeleniumRC 服务器和运行测试的 rake 任务。但是对于我的生活,我无法做到这一点。

如果需要,我可以提供更多信息。但是,在这一点上,我很高兴知道有谁也在走这条路。

-谢谢!

附:我这样做是为了将 IIS/ASP 应用程序与 rails 混合并迭代地进行完全转换的前奏。如果我无法迈出这第一步,我的老板们会否决上轨的整个想法,所以请帮忙 ;-)

【问题讨论】:

    标签: ruby testing selenium rspec


    【解决方案1】:

    您需要 gem install 'rspec' 和 'selenium-client'。我安装了 ruby​​ 1.9.2,是的,我使用 rvm。我为 firefox_version 的废话道歉。我的 Macbook 上安装了多个 firefox 版本。如果您安装了单个 firefox,则只需指定 :browser => "*firefox"

    您需要打开两个终端窗口。首先,启动 selenium-server.jar。

    在第二个窗口中,cd 到包含 rspec_hello.rb 的目录并输入 ruby ./rspec_hello.rb

    这里是 rspec_hello.rb

        require "rubygems"         # >= 1.8.12
        require 'rspec'            # >= 2.1.0
        require "selenium/client"  # >= 1.2.18
    
        describe "google" do
          # attr_reader :selenium_driver
          @selenium_driver = nil
    
          before(:each) do
            firefox_version = 3
            firefox_path = "/Applications/Firefox" + firefox_version.to_s + ".app/Contents/MacOS/firefox-bin"
            @selenium_driver = Selenium::Client::Driver.new \
              :host => "localhost",
              :port => 4444,
              :browser => "*firefox #{firefox_path}",
              :url => "http://www.google.com/",
              :timeout_in_second => 60
              @selenium_driver.start
          end
    
          after(:each) do
            puts " "
            puts "goodbye world"
            @selenium_driver.close_current_browser_session
          end
    
          it "test google" do
            puts "hello world"
            @selenium_driver.open "/"
            @selenium_driver.type "q", "selenium wiki"
            @selenium_driver.click "btnG"
            @selenium_driver.wait_for_text("Selenium Wiki")
        @selenium_driver.text?("Selenium Wiki").should be_true
      end
    end
    

    【讨论】:

      【解决方案2】:

      您是否考虑过使用rvm 创建沙盒环境并使用bundler 为您管理依赖项?

      【讨论】:

        【解决方案3】:

        我在使用 rails 时使用 rvm 和 bundler。对于我在这个问题中关心的项目,我不希望有一个单独的环境来单独测试旧的东西(IIS/ASP)。

        因此,我决定使用 Test:Unit Selenium 转换而不是 RSpec,以及一些 rake 任务在与混合项目相同的环境中独立进行测试。

        这是有道理的,因为几乎所有这些 selenium 测试都在测试混合系统的 OLD 一半,并且在集成新 rails 代码时将替换为 rspec/cucumber/capybara 测试,直到 OLD 一半(连同独立测试)已不复存在。

        在新的仅集成 Rails 项目中,硒仍然有用途,尤其是用于 AJAX 测试。

        请参阅此railscast 以获取示例。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-03
          • 2021-11-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多