YusukeIwaki / puppeteer-ruby

A Ruby port of Puppeteer
Apache License 2.0
290 stars 41 forks source link

Protocol error (Target.setAutoAttach): Session closed. Most likely the iframe has been closed. (Puppeteer::CDPSession::Error) #331

Open akichim21 opened 6 months ago

akichim21 commented 6 months ago

Step To Reproduce / Observed behavior

It will run to the end, although an error will occur. Comment out browser.disconnect and the error disappears Is it because the part doing parallel processing is not terminating at the time of disconnect?

connect do |browser| xxx end Is same.

  class Scraping
    def execute
      browser = Puppeteer.connect(
        browser_ws_endpoint: "ws://docker.for.mac.localhost:9222/devtools/browser/xxxx",
        // Error also occurs in the following
        // browser_ws_endpoint: "ws://127.0.0.1:9222/devtools/browser/xxx"
      )
      browser.disconnect
      p 1111
    end
  end

bundle exec rails c Scraping.new.execute

W, [2024-05-05T13:27:41.016862 #201]  WARN -- : Protocol error (Target.setAutoAttach): Session closed. Most likely the iframe has been closed. (Puppeteer::CDPSession::Error)
/usr/local/bundle/gems/puppeteer-ruby-0.45.4/lib/puppeteer/cdp_session.rb:37:in `async_send_message'
/usr/local/bundle/gems/puppeteer-ruby-0.45.4/lib/puppeteer/chrome_target_manager.rb:244:in `block in handle_attached_to_target'
/usr/local/bundle/gems/puppeteer-ruby-0.45.4/lib/puppeteer/concurrent_ruby_utils.rb:62:in `block in future'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/promises.rb:1593:in `evaluate_to'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/promises.rb:1776:in `block in on_resolvable'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:359:in `run_task'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:350:in `block (3 levels) in create_worker'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:341:in `loop'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:341:in `block (2 levels) in create_worker'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:340:in `catch'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:340:in `block in create_worker'
W, [2024-05-05T13:27:41.023681 #201]  WARN -- : 2 errors
Protocol error (Target.setAutoAttach): Target Closed. (Puppeteer::Connection::ProtocolError)
Protocol error (Runtime.runIfWaitingForDebugger): Target Closed. (Puppeteer::Connection::ProtocolError) (Concurrent::MultipleErrors)
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/promises.rb:1268:in `raise'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/promises.rb:1268:in `wait_until_resolved!'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/promises.rb:998:in `value!'
/usr/local/bundle/gems/puppeteer-ruby-0.45.4/lib/puppeteer/concurrent_ruby_utils.rb:32:in `await_all'
/usr/local/bundle/gems/puppeteer-ruby-0.45.4/lib/puppeteer/chrome_target_manager.rb:243:in `block in handle_attached_to_target'
/usr/local/bundle/gems/puppeteer-ruby-0.45.4/lib/puppeteer/concurrent_ruby_utils.rb:62:in `block in future'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/promises.rb:1593:in `evaluate_to'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/promises.rb:1776:in `block in on_resolvable'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:359:in `run_task'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:350:in `block (3 levels) in create_worker'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:341:in `loop'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:341:in `block (2 levels) in create_worker'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:340:in `catch'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:340:in `block in create_worker'
W, [2024-05-05T13:27:41.024516 #201]  WARN -- : 2 errors
Protocol error (Target.setAutoAttach): Target Closed. (Puppeteer::Connection::ProtocolError)
Protocol error (Runtime.runIfWaitingForDebugger): Target Closed. (Puppeteer::Connection::ProtocolError) (Concurrent::MultipleErrors)
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/promises.rb:1268:in `raise'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/promises.rb:1268:in `wait_until_resolved!'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/promises.rb:998:in `value!'
/usr/local/bundle/gems/puppeteer-ruby-0.45.4/lib/puppeteer/concurrent_ruby_utils.rb:32:in `await_all'
/usr/local/bundle/gems/puppeteer-ruby-0.45.4/lib/puppeteer/chrome_target_manager.rb:243:in `block in handle_attached_to_target'
/usr/local/bundle/gems/puppeteer-ruby-0.45.4/lib/puppeteer/concurrent_ruby_utils.rb:62:in `block in future'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/promises.rb:1593:in `evaluate_to'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/promises.rb:1776:in `block in on_resolvable'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:359:in `run_task'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:350:in `block (3 levels) in create_worker'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:341:in `loop'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:341:in `block (2 levels) in create_worker'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:340:in `catch'
/usr/local/bundle/gems/concurrent-ruby-1.2.3/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:340:in `block in create_worker'

1111

Expected behavior

No error

Environment

puppeteer-ruby (0.45.4) concurrent-ruby (>= 1.1, < 1.3) mime-types (>= 3.0) websocket-driver (>= 0.6.0)

Paste the output of ruby --version 3.1.2p20

Mac

Connect to host's chrome from docker container

host

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222