无法启动 firefox 浏览器并在 RubyMine 中使用 RSpec 进行 运行 测试
Unable to launch firefox browser and run test with RSpec in RubyMine
我是 Ruby 和 Rspec 的新手。我只是做了以下步骤。
- 单击 Ruby我的新项目
- 将标题命名为 Selenium2(只是一些随机名称)
- 我正在使用 ruby 2.7.1
- 在 Selenium2 文件夹下创建了一个新目录 'src'
- 已添加 test.rb 文件
我在 test.tb 文件中添加了以下代码(已经为 selenium-webdriver 和 rspec 安装了 gem),如下面的屏幕截图所示。
右键单击 test.rb 并选择 运行 'test'。
得到下面的输出,如下面的截图所示。作为新手,我看不到代码有任何问题。但它甚至没有启动 Firefox 浏览器,也没有在控制台中打印。
我是不是漏掉了什么?
我认为你做错了。
在你的项目根文件夹中,添加Gemfile
文件,这个Gemfile可以是这样的:
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '2.6.5'
gem 'rspec', '~> 3.9'
gem 'capybara', '~> 3.30'
gem 'selenium-webdriver', '~> 3.142', '>= 3.142.6'
在项目根目录中创建一个 spec/
目录
在您的项目根目录中为您的 selinium 日志创建一个 log/
目录。
创建一个 spec/spec_helper.rb
文件,配置如下:
# frozen-string-literal: true
require 'rspec'
require 'capybara/rspec'
require 'capybara/dsl'
require 'selenium-webdriver'
Selenium::WebDriver.logger.level = :debug
Selenium::WebDriver.logger.output = File.dirname(Dir.pwd) + '/project_dir_name/log/selenium.log'
Capybara.register_driver :firefox do |app|
Capybara::Selenium::Driver.new(app, browser: :firefox)
end
Capybara.default_driver = :firefox
Capybara.javascript_driver = :firefox
Capybara.app_host = 'http://127.0.0.1:3005'
Capybara.default_max_wait_time = 10
RSpec.configure do |config|
config.before(:each) do
config.include Capybara::DSL
end
end
以上代码将设置rspec,水豚。如果需要,您可以更改驱动程序、主机和其他配置。
现在创建一个新的 spec/features/test.rb
文件,内容如下:
require 'spec_helper'
describe 'Google homepage test', js: true do
before(:each) do
visit('https://google.com')
end
describe "First test" do
it "check title" do
expect(page.title).to be == "some text"
end
end
end
然后 运行: bundle exec rspec spec/features/test.rb
来自你的项目根目录。
如果你不想这样,那么问题是你 运行宁 ruby test.rb
,实际上 test.rb
这应该 运行ned 通过rspec
:
$ rspec test.rb
如果您使用的是捆绑器,那么:
$ bundle exec rspec test.rb
我是 Ruby 和 Rspec 的新手。我只是做了以下步骤。
- 单击 Ruby我的新项目
- 将标题命名为 Selenium2(只是一些随机名称)
- 我正在使用 ruby 2.7.1
- 在 Selenium2 文件夹下创建了一个新目录 'src'
- 已添加 test.rb 文件
我在 test.tb 文件中添加了以下代码(已经为 selenium-webdriver 和 rspec 安装了 gem),如下面的屏幕截图所示。
右键单击 test.rb 并选择 运行 'test'。
得到下面的输出,如下面的截图所示。作为新手,我看不到代码有任何问题。但它甚至没有启动 Firefox 浏览器,也没有在控制台中打印。
我是不是漏掉了什么?
我认为你做错了。
在你的项目根文件夹中,添加
Gemfile
文件,这个Gemfile可以是这样的:source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '2.6.5' gem 'rspec', '~> 3.9' gem 'capybara', '~> 3.30' gem 'selenium-webdriver', '~> 3.142', '>= 3.142.6'
在项目根目录中创建一个
spec/
目录在您的项目根目录中为您的 selinium 日志创建一个
log/
目录。创建一个
spec/spec_helper.rb
文件,配置如下:# frozen-string-literal: true require 'rspec' require 'capybara/rspec' require 'capybara/dsl' require 'selenium-webdriver' Selenium::WebDriver.logger.level = :debug Selenium::WebDriver.logger.output = File.dirname(Dir.pwd) + '/project_dir_name/log/selenium.log' Capybara.register_driver :firefox do |app| Capybara::Selenium::Driver.new(app, browser: :firefox) end Capybara.default_driver = :firefox Capybara.javascript_driver = :firefox Capybara.app_host = 'http://127.0.0.1:3005' Capybara.default_max_wait_time = 10 RSpec.configure do |config| config.before(:each) do config.include Capybara::DSL end end
以上代码将设置rspec,水豚。如果需要,您可以更改驱动程序、主机和其他配置。
现在创建一个新的
spec/features/test.rb
文件,内容如下:require 'spec_helper' describe 'Google homepage test', js: true do before(:each) do visit('https://google.com') end describe "First test" do it "check title" do expect(page.title).to be == "some text" end end end
然后 运行:
bundle exec rspec spec/features/test.rb
来自你的项目根目录。
如果你不想这样,那么问题是你 运行宁 ruby test.rb
,实际上 test.rb
这应该 运行ned 通过rspec
:
$ rspec test.rb
如果您使用的是捆绑器,那么:
$ bundle exec rspec test.rb