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车身”。