运行specs时出错:Poltergeist使用CSS选择器检测到另一个元素

时间:2013-09-12 13:18:26

标签: capybara activeadmin poltergeist

我在我的Gemfile中添加了activeadmin。

我跑了:

rails g active_admin:install Admin User
rake db:migrate

然后我跑了:

bundle exec rake test:integrations

我收到了这个错误:

Capybara::Poltergeist::ClickFailed:
Click at co-ordinates [330.5, 714] failed. Poltergeist detected another element 
with CSS selector 'html body div#ui-datepicker-div.ui-datepicker.ui-widget.ui-widget-content.ui-helper-clearfix.ui-corner-all div.ui-datepicker-header.ui-widget-header.ui-helper-clearfix.ui-corner-all div.ui-datepicker-title span.ui-datepicker-month' 
at this position. It may be overlapping the element you are trying to click.

我尝试按this post中的建议排除activeadmin js和css,但我仍然收到错误。

有没有人对如何解决这个问题有任何想法?

4 个答案:

答案 0 :(得分:18)

我假设消息来自失败的水豚步骤。今天我在针对ajax表单使用以下内容时遇到了这个问题:

find('some-css').click()

不幸的是,有时它会返回非常令人沮丧的重叠css错误。我所做的是改为使用这种方法:

find('some-css').trigger('click')

嘿presto每次都有效:)

希望这有帮助。

答案 1 :(得分:1)

我收到此错误是因为我测试了悬停,然后需要点击工具提示下方的链接。解决方案是在page.find('.sp-logo').hover之前添加click_link以使工具提示无法使用。

答案 2 :(得分:1)

我还有另一个错误,Chrome和Poltergeist上的find_link无法点击带有EM标签的A标签及其中的一些文字,尽管它在Firefox和rack_test中运行良好。解决方案是将click_link(link)替换为find('a em', text: link).click。不幸的是,这不会对rack_test起作用,导致这种黑客攻击:

When /^I click the emphasized text "([^\"]*)"$/ do |link|
  if Capybara.current_driver == :rack_test
    click_link(link)
  else
    find('a em', text: link).click
  end
end

答案 3 :(得分:1)

在我的情况下,想要测试第二次点击 - 忘记第一次点击后显示的模态。在阅读了大量的CSS选择器之后找到它。

detected another element with CSS selector
'html.js...alotofotherclasses...div.sweet-alert.show-sweet-alert.visible'

通过解雇它来解决它 - 基本上 - 只需仔细阅读信息。

click_button I18n.t('mail_form.submit')
expect(page).to have_content I18n.t('mail_form.flash.submitted')
click_button I18n.t('alert.ok')