我制作了一个可以在无头模式或浏览器模式下运行的水豚脚本。 它尝试在Wiki中创建页面。 通过单击菜单栏中的“添加”,然后在打开的下拉菜单中单击“页面”,可以做到这一点。
这在浏览器模式下有效。 但是在无头模式(Webkit)中,单击链接“页面”后,将返回一个空页面。 谁能告诉我为什么会这样?
在我的代码中,我有这个
click_link 'Add'
if ENV['BROWSER'] == 'headless'
wait_for_ajax
verbose( "headless add page", 3)
p page.html
lnk = all( :css, "#createPageLink").first
p lnk
wait_for_ajax
lnk.click
else
verbose( "klik Page", 3)
click_link 'Add a Page'
lnk = all( :css, "#createPageLink").first
p lnk
lnk.click
end
wait_for_ajax
p page.html
此输出为无头模式
PAGEHTML</div></body></html>"
#<Capybara::Node::Element tag="a" path="/html/body[@id='com-atlassian-confluence']/div[@id='full-height-container']/div[@id='splitter']/div[@id='splitter-content']/div[@id='main']/div[@id='main-header']/div[@id='navigation']/ul/li[3]/div/ul[@id='add-menu-link-space']/li[1]/a[@id='createPageLink']">
""
所以找到链接(对LNK显示水豚::节点::元),但上的链接点击返回一个空页,而当该链接被点击浏览器,我得到的HTML就是链接后面。
我希望你能告诉我我所忽略的事情。
粗鲁
Capybara-webkit已过时,基本上等同于使用8年的浏览器。 它很可能不再支持您正在与之交互的页面上使用的JS&CSS。 如果您需要无头的支持,那么最好不要使用capybara-webkit
,而要在无头模式下使用带有chrome的硒,或者通过CDP驱动程序(例如apparition )直接访问Chrome以与任何书面/最近几年更新。