有关如何修复的任何建议?
gem install capybara-webkit -v '0.11.0'
Building native extensions. This could take a while...
ERROR: Error installing capybara-webkit:
ERROR: Failed to build gem native extension.
/home/durrantm/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
sh: qmake: not found
Gem files will remain installed in /home/durrantm/.rvm/gems/ruby-1.9.3-p194/gems/capybara-webkit-0.11.0 for inspection.
Results logged to /home/durrantm/.rvm/gems/ruby-1.9.3-p194/gems/capybara-webkit-0.11.0/./gem_make.out
Run Code Online (Sandbox Code Playgroud) 我使用capybara点击一个复选框,但无论我做什么,它似乎都找不到它.我能够正确地找到跨度内的跨度和标签,但不能找到我实际需要的输入.
这是复选框
<span class="checkbox tos">
<input id="agreement" name="agreement" onclick="agreeValidate();" type="checkbox" value="false">
<label for="agreement">I accept the <a href="http://www.dev.com:3000/terms" target="_blank">Terms of Use</a>, <a href="http://www.dev.com:3000/privacy" target="_blank">Privacy Policy</a>, and am at least 13 years old</label>
</span>
Run Code Online (Sandbox Code Playgroud)
以下是我尝试过的一些事情
page.check('agreement')
find(:css, '#agreement').set(true)
find('#agreement').set(true)
find('#agreement').click
Run Code Online (Sandbox Code Playgroud)
但是,他们都给了我同样的错误
Unable to find css "#agreement" (Capybara::ElementNotFound)
Run Code Online (Sandbox Code Playgroud)
我也想知道onclick
当单击复选框时,这些方法中的任何一个都会触发该方法吗?我觉得find(:css, '#agreement').set(true)
不会触发onclick
事件.但是,我不确定其余的事情.
更新
我也试过通过xpath选择元素.以下是我发现的各种事情
find(:xpath, '//*[@id="registration"]/span[2]')
Run Code Online (Sandbox Code Playgroud)
这样就可以找到span
没有问题的元素
find(:xpath, '//*[@id="registration"]/span[2]/input')
Run Code Online (Sandbox Code Playgroud)
这找不到我需要的元素,但是这个xpath正确地选择了chrome控制台中的元素
find(:xpath, '//*[@id="agreement"]')
Run Code Online (Sandbox Code Playgroud)
这找不到我需要的元素,但xpath选择chrome控制台中的元素
find(:xpath, '//*[@id="registration"]/span[2]/label')
Run Code Online (Sandbox Code Playgroud)
这样就可以label
在span
没有问题的情况下找到元素.
我一直在终端上运行测试一段时间没有任何问题:
黄瓜创造\新\ Game.feature
其中包含以下内容:
Feature: Create New Game
Background:
Given I am logged in
Scenario: Cleanup & New Game 01
Then I Delete all test Games
Run Code Online (Sandbox Code Playgroud)
而红宝石:
Given(/^I am logged in$/) do
el = first("button[ttag='account_dropdown_btn']", :visible => true)
if el.nil?
logMeIn("user@user1.com","pa55w0rd")
end
end
Run Code Online (Sandbox Code Playgroud)
logMeIn定义为:
# Logs the user in with given credentials
def logMeIn(username, password)
page.driver.browser.manage.window.maximize
visit ENV['BASE_URL']
fill_in 'j_username', :with => username
fill_in 'j_password', :with => password
click_button 'Login'
end
Run Code Online (Sandbox Code Playgroud)
从测试工作到现在,上述情况都没有改变.今天,当我开始测试时,一旦Firefox打开,我立即得到:
Background: # features/Create New Game.feature:4
Given I am …
Run Code Online (Sandbox Code Playgroud) 我有一个JS功能规范,我正试图与Capybara Webkit一起运行.但它似乎无法找到我的数据库记录.
有问题的规范看起来像这样
it "should allow pledging to a Hardback level", js: true do
book = FactoryGirl.create :book
visit book_path(book)
click_link "pledge-btn"
end
Run Code Online (Sandbox Code Playgroud)
不幸的是,book_path(book)
404s 的请求因为无法找到该书.
如果我取下:js
旗帜,测试通过.
我建议DatabaseCleaner
使用:truncation
JS规范作为推荐的方法.
# spec/support/database_cleaner.rb
RSpec.configure do |config|
config.use_transactional_fixtures = false
config.before(:suite) do
DatabaseCleaner.clean_with(:truncation)
end
config.before(:each) do
DatabaseCleaner.strategy = :transaction
end
config.before(:each, :js => true) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.start
DatabaseMetadata.create!(:sanitized_at => DateTime.now)
end
config.after(:each) do
DatabaseCleaner.clean
end
end
Run Code Online (Sandbox Code Playgroud)
我可以puts
在测试中找到这本书,它会被发现. …
有没有办法点击带有capybara-webkit的Google Maps叠加层?使用Selenium的Capybara怎么样?我想在选择标记后测试信息窗口的内容.我还想测试页面上有n个标记.
我想用QT5的QtWebKit
用capybara-webkit
.
brew uninstall qt
Uninstalling /usr/local/Cellar/qt/4.8.4...
brew install qt5
This formula is keg-only: so it was not symlinked into /usr/local.
/usr/local/Cellar/qt5/5.0.2: 3103 files, 140M, built in 60.9 minutes
Run Code Online (Sandbox Code Playgroud)
如果我强制brew为qt5创建符号链接,我可以为capybara-webkit
... 构建本机扩展名.
brew link --force qt5
Linking /usr/local/Cellar/qt5/5.0.2... 122 symlinks created
gem install capybara-webkit -v '1.0.0'
Successfully installed capybara-webkit-1.0.0
Run Code Online (Sandbox Code Playgroud)
..但webkit_server
很难崩溃..
bundle exec rake test:integration
Errno::EADDRNOTAVAIL: Can't assign requested address - connect(2)
dyld: Library not loaded: /private/tmp/qt5-KytU/qt-everywhere-opensource-src-5.0.2/qtwebkit/lib/QtWebKit.framework/Versions/5/QtWebKit
Referenced from: /usr/local/opt/qt5/lib/QtWebKitWidgets.framework/Versions/5/QtWebKitWidgets
Reason: image not found
Run Code Online (Sandbox Code Playgroud)
查看 …
我在使用Headless gem,Xvfb和我们的ci服务器运行capybara-webkit时遇到了一些问题.我们使用此设置进行Ruby on Rails 3.2应用程序的自动集成测试和javascript测试.在测试期间,它抱怨说
webkit_server: cannot connect to X server
Run Code Online (Sandbox Code Playgroud)
但是当我 ps aux | grep Xvfb
deploy 1602 0.0 0.1 61696 1912 pts/2 S+ Jul10 0:00 /usr/bin/Xvfb :99 -screen 0 1280x1024x24 -ac
Run Code Online (Sandbox Code Playgroud)
我看到Xvfb正在运行.如果我用--trace
它运行测试也只显示上面的错误日志,我无法调试错误.
有什么想法我可以获得更多信息,甚至解决方案?
我在页面上有一个Select2元素,通过ajax加载结果.希望能与水豚/ rspec的测试这个(使用捉弄人的鬼司机),但是由于选择二元素实际上开始作为一个隐藏字段,然后填充一个<ul>
一旦结果进行处理,没有一个正常的select
,fill_in
或者choose
助手会工作.
我现在拥有的是什么
it "should have a search field for events" do
click_link "Select an Event" # this works as expected
within('.select2-container') do # works
find('.select2-search input').set(event.description[0,5]) # won't work!
find(:xpath, "li[text()='#{event.description}']").click
end
click_button "Search"
page.should have_content("Displaying all 2 photos")
end
Run Code Online (Sandbox Code Playgroud)
上面的第4行,显然capybara可以找到元素,但值不会改变,Select2永远不会进行ajax调用.(不能fill_in
在那里使用普通因为搜索字段元素没有label,id或name属性)
我正在改进我的测试,RSpec
并capybara-webkit
试图删除所有css
和xpath
选择器之类的
find('#edit_user > div:nth-child(7) > div > div > button').click
Run Code Online (Sandbox Code Playgroud)
我正在寻找替代它们的最佳选择.
我打算使用css class
元素,但一些"专业"水豚测试人员说这不是最好的选择.
所以我的问题是:我可以data
在测试中使用这些属性吗?
如果我有一个元素
<button name="button" type="submit" class="button last" data-test="edit.update">Update/button>
Run Code Online (Sandbox Code Playgroud)
我能做到吗?
find('edit.update').click
Run Code Online (Sandbox Code Playgroud)
?
你觉得这是个好主意吗?如果您对此主题有更多想法/信息,请随时发表评论!