与capybara / poltergeist一起进行基本测试

时间:2015-07-03 03:09:45

标签: rspec poltergeist

我正在尝试使用水豚来运行,我正在测试poltergeist和selenium-webdriver之间的功能差异。一个非常基本的测试给了我意想不到的结果,我想确认这是否是我在配置中做错了,或者这只是预期的行为。

spec_helper:

require 'capybara/rspec'
# require 'selenium/webdriver'
require 'capybara/poltergeist'

Capybara.run_server = false
# Capybara.default_driver = :selenium
Capybara.default_driver = :poltergeist
Capybara.javascript_driver = :poltergeist
Capybara.app_host = 'http://google.com'

hello_world_spec:

require 'spec_helper'

feature 'testing with rspec' do
  before :each do
    visit '/'
  end

  scenario 'visit google main page' do
    expect(page).to have_content 'About'
  end

  scenario 'search for something', js: true do
    fill_in 'q', with: 'test search'
    # click_on 'Google Search'
    sleep 5
    page.driver.render 'screenshot.png', full: true
    expect(page).to have_content 'Wikipedia'
  end
end

第一次测试按预期成功,但第二次测试仅适用于硒。如果您在任何浏览器中手动执行此测试,Google会在您键入时执行搜索。使用恶作剧者,直到我手动点击“Google搜索”按钮才会执行搜索。这是怎么回事?

1 个答案:

答案 0 :(得分:1)

Selenium使用native.send_keys填写输入字段。但是,看看poltergiest的changelog它似乎只有基本的send_keys支持,据我所知,在代码库中它没有使用send_keys来设置字段值。

尝试直接使用send_keys方法查看是否可以解决您的问题。你应该在你的情况下工作,因为你只发送一个没有键修饰符的简单字符串

以下是我的建议 -

find_field('q').native.send_keys('test search')