Closed ryanb closed 1 year ago
Turn on logging, let's see what was requested:
Selenium::WebDriver.logger.level = :debug
I'm seeing the same issue even on webdrivers v5.2. This started when upgrading chromedriver from v114.x to v115.x. Here is the output of the logging:
2023-08-01 07:02:08 DEBUG Selenium Executing Process ["/opt/homebrew/bin/chromedriver", "--port=9515"]
2023-08-01 07:02:08 DEBUG Selenium polling for socket on ["127.0.0.1", 9515]
Starting ChromeDriver 115.0.5790.102 (90efd4b0ad6aa15eeafcdabd5817ae939f7ba059-refs/branch-heads/5790_90@{#9}) on port 9515
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
2023-08-01 07:02:08 INFO Selenium -> POST session
2023-08-01 07:02:08 INFO Selenium >>> http://127.0.0.1:9515/session | {"capabilities":{"alwaysMatch":{"browserName":"chrome","goog:chromeOptions":{"args":["--headless","--disable-site-isolation-trials"]}}}}
2023-08-01 07:02:08 DEBUG Selenium > {"Accept"=>"application/json", "Content-Type"=>"application/json; charset=UTF-8", "User-Agent"=>"selenium/4.3.0 (ruby macosx)", "Content-Length"=>"136"}
2023-08-01 07:02:08 INFO Selenium <- {"value":{"error":"unknown error","message":"unknown error: cannot find Chrome binary","stacktrace":"0 chromedriver 0x00000001030e2924 chromedriver +
4303140\n1 chromedriver 0x00000001030db050 chromedriver + 4272208\n2 chromedriver 0x0000000102d0f328 chromedriver + 291624\n3 chromedriver
0x0000000102d37a7c chromedriver + 457340\n4 chromedriver 0x0000000102d36ffc chromedriver + 454652\n5 chromedriver 0x0000000102d76040 chromedriver + 712768\n6
chromedriver 0x0000000102d7580c chromedriver + 710668\n7 chromedriver 0x0000000102d408d4 chromedriver + 493780\n8 chromedriver 0x0000000102
d4171c chromedriver + 497436\n9 chromedriver 0x00000001030a37dc chromedriver + 4044764\n10 chromedriver 0x00000001030a7d20 chromedriver + 4062496\n11 chromedriver
0x00000001030adf40 chromedriver + 4087616\n12 chromedriver 0x00000001030a8824 chromedriver + 4065316\n13 chromedriver 0x0000000103080d1c chr
omedriver + 3902748\n14 chromedriver 0x00000001030c4414 chromedriver + 4178964\n15 chromedriver 0x00000001030c456c chromedriver + 4179308\n16 chromedriver
0x00000001030d4830 chromedriver + 4245552\n17 libsystem_pthread.dylib 0x000000019a81bfa8 _pthread_start + 148\n18 libsystem_pthread.dylib 0x000000019a816da0 thread_start +
8\n"}}
2023-08-01 07:02:09 DEBUG Selenium Executing Process ["/opt/homebrew/bin/chromedriver", "--port=9713"]
2023-08-01 07:02:09 DEBUG Selenium polling for socket on ["127.0.0.1", 9713]
Starting ChromeDriver 115.0.5790.102 (90efd4b0ad6aa15eeafcdabd5817ae939f7ba059-refs/branch-heads/5790_90@{#9}) on port 9713
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
2023-08-01 07:02:09 INFO Selenium -> POST session
2023-08-01 07:02:09 INFO Selenium >>> http://127.0.0.1:9713/session | {"capabilities":{"alwaysMatch":{"browserName":"chrome","goog:chromeOptions":{"args":["--headless","--disable-site-isolation-trials"]}}}}
2023-08-01 07:02:09 DEBUG Selenium > {"Accept"=>"application/json", "Content-Type"=>"application/json; charset=UTF-8", "User-Agent"=>"selenium/4.3.0 (ruby macosx)", "Content-Length"=>"136"}
2023-08-01 07:02:09 INFO Selenium <- {"value":{"error":"unknown error","message":"unknown error: cannot find Chrome binary","stacktrace":"0 chromedriver 0x00000001030e2924 chromedriver +
4303140\n1 chromedriver 0x00000001030db050 chromedriver + 4272208\n2 chromedriver 0x0000000102d0f328 chromedriver + 291624\n3 chromedriver
0x0000000102d37a7c chromedriver + 457340\n4 chromedriver 0x0000000102d36ffc chromedriver + 454652\n5 chromedriver 0x0000000102d76040 chromedriver + 712768\n6
chromedriver 0x0000000102d7580c chromedriver + 710668\n7 chromedriver 0x0000000102d408d4 chromedriver + 493780\n8 chromedriver 0x0000000102
d4171c chromedriver + 497436\n9 chromedriver 0x00000001030a37dc chromedriver + 4044764\n10 chromedriver 0x00000001030a7d20 chromedriver + 4062496\n11 chromedriver
0x00000001030adf40 chromedriver + 4087616\n12 chromedriver 0x00000001030a8824 chromedriver + 4065316\n13 chromedriver 0x0000000103080d1c chr
omedriver + 3902748\n14 chromedriver 0x00000001030c4414 chromedriver + 4178964\n15 chromedriver 0x00000001030c456c chromedriver + 4179308\n16 chromedriver
0x00000001030d4830 chromedriver + 4245552\n17 libsystem_pthread.dylib 0x000000019a81bfa8 _pthread_start + 148\n18 libsystem_pthread.dylib 0x000000019a816da0 thread_start +
8\n"}}
So many different overlapping bugs during this mess...
chromedriver 115 currently has a bug on Mac where it is looking for a binary "Google Chrome for Testing" instead of just "Google Chrome." Since most people didn't install Chrome that way it is erroring. Google made a fix, it hasn't been released, yet.
Selenium 4.11:
Webdrivers can't do the third thing, so you have to use Chrome::Options#binary=
to set the path to the browser yourself.
This is one of the reasons why the Selenium solution is better if you can upgrade to it.
Just to followup on this: Chrome 116 is out now and webdrivers 5.3.0 works like a charm. I'm no longer seeing the above error. Thanks again Titus for keeping the gem going.
I'm trying out webdrivers version 5.3.0 which appears to be using Chrome for Testing, but I'm seeing this error when running capybara selenium specs in a Rails 7 app under Ruby 2.7.
I'm on Intel Mac OS X 13.3 with Chrome 115 installed.
Any suggestions on how to troublshoot this?
Thanks your work on keeping
webdrivers
gem alive for those of us on Ruby 2.7.