我正在尝试使用水豚来运行,我正在测试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搜索”按钮才会执行搜索。这是怎么回事?
答案 0 :(得分:1)
Selenium使用native.send_keys
填写输入字段。但是,看看poltergiest的changelog它似乎只有基本的send_keys支持,据我所知,在代码库中它没有使用send_keys
来设置字段值。
尝试直接使用send_keys方法查看是否可以解决您的问题。你应该在你的情况下工作,因为你只发送一个没有键修饰符的简单字符串
以下是我的建议 -
find_field('q').native.send_keys('test search')