Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails &引用;Selenium::WebDriver::Error::UnhandleAlerError:意外警报打开“;尽管使用了discouse\u确认_Ruby On Rails_Selenium_Capybara_Selenium Chromedriver - Fatal编程技术网

Ruby on rails &引用;Selenium::WebDriver::Error::UnhandleAlerError:意外警报打开“;尽管使用了discouse\u确认

Ruby on rails &引用;Selenium::WebDriver::Error::UnhandleAlerError:意外警报打开“;尽管使用了discouse\u确认,ruby-on-rails,selenium,capybara,selenium-chromedriver,Ruby On Rails,Selenium,Capybara,Selenium Chromedriver,此测试失败: describe 'a confirm modal', :js, driver: :chrome do it do visit '/test/confirm' dismiss_confirm do click_link 'Cancel' end end end 出现Selenium::WebDriver::Error::unhandledaler恐怖:意外警报打开错误 一旦到达点击链接“取消”行,它将立即失败并出现此错误: An err

此测试失败:

describe 'a confirm modal', :js, driver: :chrome do
  it do
    visit '/test/confirm'
    dismiss_confirm do
      click_link 'Cancel'
    end
  end
end
出现
Selenium::WebDriver::Error::unhandledaler恐怖:意外警报打开
错误

一旦到达
点击链接“取消”
行,它将立即失败并出现此错误:

An error occurred in an after hook
  Selenium::WebDriver::Error::UnhandledAlertError: unexpected alert open: {Alert text : Are you sure?}
  (Session info: chrome=53.0.2785.101)
  (Driver info: chromedriver=2.21.371461 (633e689b520b25f3e264a2ede6b74ccc23cb636a),platform=Linux 4.4.0-42-generic x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 1 milliseconds: null
Build info: version: '2.53.0', revision: '35ae25b', time: '2016-03-15 17:00:58'
System info: host: '64c23d07d03c', ip: '172.18.0.6', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-42-generic', java.version: '1.8.0_03-Ubuntu'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, chrome={chromedriverVersion=2.21.371461 (633e689b520b25f3e264a2ede6b74ccc23cb636a), userDataDir=/tmp/.com.google.Chrome.nJ0sj0}, takesHeapSnapshot=true, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=53.0.2785.101, platform=LINUX, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: 12b4869246e45555e3456370e74ad536 (org.openqa.selenium.UnhandledAlertException)
  occurred at [remote server] sun.reflect.GeneratedConstructorAccessor31():-1:in `newInstance'
我可以在Chrome窗口中看到它仍在等待我按OK或Cancel

为什么会失败?我如何让它取消确认而不是出错?

当我使用
byebug
逐步浏览代码时,我可以看到
discouse\u modal
甚至没有到达它试图找到一个modal并discover的部分。当点击
点击链接时,它会立即出错,我认为这是不应该发生的(否则
解除模式
会有一个
救援
块):

selenium服务器在docker容器中从
selenium/standalone chrome debug
图像运行

驱动程序配置为:

Capybara.register_driver :chrome do |app|
  Capybara::Selenium::Driver.new(
    app,
    browser:                :remote,
    url:                    "http://#{ENV['CHROME_WEBDRIVER_HOST']}:4444/wd/hub",
    desired_capabilities:   :chrome
  )
end
它使用的是最新版本的gems(据我所知):

这是与之交互的Rails模板(
app/views/confirm.html.haml
):


=链接到“取消”,“确认=>”你确定吗

更新:感谢@TomWalpole和@SaurabhGaur建议使用较旧版本的chromedriver

看起来我已经有几周没有更新我的
selenium/standalone-chrome-debug
映像了(尽管我很惊讶5周太久了,这会导致问题)

在更新之前

selenium/standalone-chrome-debug latest 84d9c94a042a 5 weeks ago         844.8 MB

root@65a9cd48f684:/# chromedriver --version                                                                                                                                                                
ChromeDriver 2.21.371461 (633e689b520b25f3e264a2ede6b74ccc23cb636a)
selenium/standalone-chrome-debug latest df941c594b0a 2 days ago          865.3 MB

root@6800a351c182:/# chromedriver --version                  
ChromeDriver 2.24.417424 (c5c5ea873213ee72e3d0929b47482681555340c3)
更新后

selenium/standalone-chrome-debug latest 84d9c94a042a 5 weeks ago         844.8 MB

root@65a9cd48f684:/# chromedriver --version                                                                                                                                                                
ChromeDriver 2.21.371461 (633e689b520b25f3e264a2ede6b74ccc23cb636a)
selenium/standalone-chrome-debug latest df941c594b0a 2 days ago          865.3 MB

root@6800a351c182:/# chromedriver --version                  
ChromeDriver 2.24.417424 (c5c5ea873213ee72e3d0929b47482681555340c3)

而且它有效

在Chrome中使用selenium webdriver时,当Chrome自身更新时,保持chromedriver的更新非常重要。在您的日志中,它显示了chromedriver 2.21版本,但最新版本是2.24-更新该版本,您的问题应该会消失。

将chromedriver更新为2.24-如果这无法解决问题,那么我们需要知道是什么打开了模式警报,因为在单击“取消”之前,它看起来已经打开了。您是什么版本的chromedriver使用???@SaurabhGaur,它在log-chromedriver=2.21中。371461@TomWalpole是的,可能这就是问题所在,你是对的,chromedriver应该是
升级>=2.22
,因为我之前在
chromedriver 2.21
中也遇到过同样的问题。thanks@TomWalpole谢谢你的建议!看来这就解决了。看起来我的docker图像已经有几个星期没有更新了。如果你想把它作为一个答案,我可以接受作为解决方案。谢谢根据你的建议,我还更新了问题。