gpt4 book ai didi

javascript - 如何在 Capybara 和 Selenium 中打开浏览器

转载 作者:搜寻专家 更新时间:2023-11-01 04:16:46 26 4
gpt4 key购买 nike

我是 Capybara 的新手,之前也从未使用过 Selenium。我正在 MacOSX 上做一个 ruby​​ on rails 项目,无论出于什么原因,当我运行测试时,浏览器窗口永远不会打开。我的堆栈是:Capybara、Selenium、Rspec、Ruby on Rails。我的测试如下:

describe 'Downloads', js: true do

context ' compress zip and download file' do
before do
Capybara.current_driver = :selenium
session = Capybara::Session.new(:selenium)
session.visit '/users/sign_in'
find('#tab_signin').click
within("#new_user") do
fill_in 'user_login', :with => 'admin@local.host'
fill_in 'user_password', :with => 'password'
end
click_button 'Sign in'
end

it 'downloads the project and navigates to downloads page' do
visit 'some/path'
within '.create-download' do
find(:select).find("option[value='zip']").select_option
end
sleep 3
page.should have_css('#download-modal.in')
end

结束结束

我还尝试将 features/support/env.rb 中的内容更改为:

Capybara.javascript_driver = :selenium
Capybara.register_driver :selenium do |app|
profile = Selenium::WebDriver::Firefox::Profile.new
Capybara::Selenium::Driver.new(app, :browser => :firefox, :profile => profile)
end

更新

不仅浏览器打不开,而且测试失败,输出如下:

Failure/Error: visit '/users/sign_in'
ArgumentError:
unknown option: {:resynchronize=>true}

最佳答案

经过大量的工作,我终于弄明白了。感谢@RAJ 建议将配置信息放在哪里。 feature/support/env.rb 用于 cucumber ,我使用的是 rspec。

我读到的关于 selenium 和 capybara 的大部分文章都告诉我在 block 的开头使用 js: true 选项,但这不起作用。一旦我将其更改为 feature: true 它就起作用了。我的最终解决方案如下所示:

describe 'Downloads', feature: true do

context 'compress zip and download file' do
before do

visit '/users/sign_in'
find("a[href$='signin']").click
within("#new_user") do
fill_in 'user_login', :with => 'admin@local.host'
fill_in 'user_password', :with => 'password'
end
click_button 'Sign in'
end

it 'downloads the project and navigates to downloads page' do
visit 'some/path'
within '.create-download' do
find(:select).find("option[value='zip']").select_option
end
sleep 3
page.should have_css('#download-modal.in')
end
end
end

然后我的 spec_helper.rb 看起来像:

Capybara.register_driver :selenium do |app|
profile = Selenium::WebDriver::Firefox::Profile.new
Capybara::Selenium::Driver.new( app, :profile => profile)
end
Capybara.default_wait_time = 10
Capybara.current_driver = :selenium
Capybara.app_host = 'http://localhost:3000'

另一件我做过但之前没有意识到的事情是在 Firefox 上安装 Selenium IDE。因为我以前从未使用过 Selenium,所以我认为我需要的只是 gem。

关于javascript - 如何在 Capybara 和 Selenium 中打开浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25126935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com