热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

capybarachrome无头确认对话框

如何解决《capybarachrome无头确认对话框》经验,请帮忙看看怎么搞?

我试图在rspec Ruby on Rails中使用无头模式的chrome和capybara/selenium,并在尝试单击确认对话框时出现错误

Capybara.register_driver(:headless_chrome) do |app|
  capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
    chromeOptions: { args: %w[headless disable-gpu test-type window-size=1920x1080] }
  )

  driver = Capybara::Selenium::Driver.new(
    app,
    browser: :chrome,
    desired_capabilities: capabilities
  )

  driver
end

Capybara.server = :puma
Capybara.Javascript_driver = :headless_chrome



scenario 'delete movie' do
  login_as user
  visit edit_public_movie_path(movie)

  expect(page).to have_selector('span[ng-click="ctrl.deleteMovie()"]')
  find('span[ng-click="ctrl.deleteMovie()"]').click

  page.driver.browser.switch_to.alert.accept

  wait_for_ajax(wait_after: 1)
  expect(page).to have_content('Click here to upload movie (Max: 500 MB)')
end

并得到了这个错误

 Event movie success delete movie
 Failure/Error: page.driver.browser.switch_to.alert.accept

 Selenium::WebDriver::Error::NoSuchAlertError:
   no alert open
     (Session info: headless chrome=59.0.3071.115)
     (Driver info: chromedriver=2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),platform=Mac OS X 10.12.5 x86_64)

使用普通模式,它可以正常工作.似乎硒不支持无头模式或需要其他方法来做到这一点.有任何想法吗?

更新(解决)

所以,我花了很多时间找工作环境.

您需要持续构建chrome,因为预览版本存在错误.你可以通过linux或Mac这些脚本来获取它

这是我的水豚配置

 Capybara.register_driver(:headless_chrome) do |app|
   capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
                                        chromeOptions: {
                                          args: %w[headless disable-gpu disable-popup-blocking no-sandbox window-size=1920x1920],
                                          binary: "#{Dir.home}/chromium-latest-#{platrofm}/latest/#{chrome_file}"
                                        })
  driver = Capybara::Selenium::Driver.new(app,
                                        browser: :chrome,
                                        desired_capabilities: capabilities)

  driver
end

Capybara.server = :puma
Capybara.Javascript_driver = :headless_chrome
Capybara.default_max_wait_time = 20
Capybara.server_port = 55305

def platform
  if /linux/ =~ RUBY_PLATFORM
    "linux"
  else
    "macosx"
  end
end

def platform_linux?
  platform == "linux"
end

def chrome_file
  if platform_linux?
    "chrome"
  else
    "Chromium.app/Contents/MacOS/Chromium"
  end
end

你应该使用page.driver.browser.switch_to.alert.accept而不是page.accept_alert


推荐阅读
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • PG12新增的VACUUM命令的SKIP_LOCKED选项
    PG12版本的VACUUM命令新增了SKIP_LOCKED选项,该选项使得vacuum命令在遇到被lock住的table时可以跳过并被视为成功执行。之前的版本中,vacuum命令会一直处于等待状态。本文还提到了PostgreSQL 12.1版本的相关信息。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • Mono为何能跨平台
    概念JIT编译(JITcompilation),运行时需要代码时,将Microsoft中间语言(MSIL)转换为机器码的编译。CLR(CommonLa ... [详细]
  • 本文摘自JavaGuide。1、简单易学;2、面向对象(封装,继承,多态);3、平台无关性(Java虚拟机实现平台无关性);4、可靠性;5、安全性;6、支持多线程(C++语言没有内 ... [详细]
  • 安卓及谷歌官网不容易上,在此整理好下载地址,这样就可以直接用迅雷下载了。Eclipse最新Mars版Eclipse(暂时还没被墙)Mac版:http:www.eclipse.org ... [详细]
  • Maven入门、什么是Maven、如何使用Maven、Maven的项目结构、简单的Mavenjava项目、Maven常用命令、Maven项目之间的引用、Maven依赖的传递、可选、排除day01
    目录第一节Maven入门1.1什么是Maven1.2如何使用Maven第一步:下载Maven第二步:配置Maven的环境变量第三步:了解什 ... [详细]
  • 这么多流媒体服务器?你怎么技术选型?
    在上一篇文章里我们介绍了我们介绍了MCU和SFU的优缺点,webRTC通信方案SFU和MCU的区别?下面就来探讨下常见的SFU开源解决方案,当然,你也可以自己实现SFU流媒体服务器 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
author-avatar
无声胜有剩
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有