Javascript phantom js中的单击事件并不总是触发

Javascript phantom js中的单击事件并不总是触发,javascript,phantomjs,capybara,Javascript,Phantomjs,Capybara,我遇到了一个问题,单击事件没有触发(有时会,有时不会),当在无头状态下运行浏览器时,总是会发生这种情况 我将使用。像这样单击方法 find("#peoplePreview > tbody > tr:first-of-type > td > a").click 在调试模式下运行phantomjs时,我得到 "name":"find","args":["css","#peoplePreview > tbody > tr:first-of-type > td

我遇到了一个问题,单击事件没有触发(有时会,有时不会),当在无头状态下运行浏览器时,总是会发生这种情况

我将使用
。像这样单击
方法

find("#peoplePreview > tbody > tr:first-of-type > td > a").click
在调试模式下运行phantomjs时,我得到

"name":"find","args":["css","#peoplePreview > tbody > tr:first-of-type > td > a"]}
{"response":{"page_id":18,"ids":[10]}}
{"name":"click","args":[18,10]}
{"response":{"position":{"x":114,"y":523.5}}}
据我所知,元素已经被找到,并且元素在正确的坐标处被单击,但是事件没有被触发

有没有人遇到过这个问题,或者有其他办法让这个事件发生

这就是我设置恶鬼的方式

Capybara.register_driver :headless do |app|
  options = {
  :js_errors => false,
  :inspector => true,
  :debug => true,
  :path => '/usr/bin/',
  :phantomjs_options => ['--ignore-ssl-errors=yes', '--ssl-protocol=any']
 }
 Capybara::Poltergeist::Driver.new(app, options)
end

谢谢

这种事我已经见过好几次了。。。我总是把范围缩小到一些时间问题上。我的怀疑是该元素存在且可单击,但未完全加载,因此当单击它时不会触发事件,它应该

保持无头测试一致的解决方法是添加睡眠或尝试单击循环中的元素,直到达到“.click”事件的预期结果

例如:

10.times do
  sleep 0.5
  element.click
  break if some_other_element[:disabled].nil? #result if the initial click was successful
end

这是一个非常时髦的解决方案,但却是我发现的唯一可靠的解决方案…

请发布完整的代码,(通常你应该像这样调用click方法…td>a”)。click();)可能是PhantomJS中使用:第一种类型的选择器的一个错误。尝试使用XPath而不是CSS选择器,并且不要专门为t车身”。