Ausgabe
Ich habe mehrere Tage damit verbracht, dieses Problem zu lösen, auf das ich mit dem folgenden Code stoße:
caps = Selenium::WebDriver::Remote::Capabilities.chrome(
"chromeOptions" => {
:args => ['--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36 LegalMonsterNoBlock"']
}
)
driver = Selenium::WebDriver.for :remote, url: selenium_host, :desired_capabilities => caps
driver.get(url)
Ich versuche, einen Test auszuführen, der diese Methode aufruft . Der Test läuft einwandfrei. Es wird geöffnet, Chrome führt den Test aus, aber immer wenn ich den Teil meiner Anwendung erreiche, der die obige Methode aufruft, schlägt der Test mit dem folgenden Fehler fehl:
Minitest::UnexpectedError: Selenium::WebDriver::Error::UnknownError: unknown error: Chrome failed to start: crashed
(chrome not reachable)
(The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: '7a6aaccda364', ip: '172.17.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '4.19.121-linuxkit', java.version: '1.8.0_232'
Driver info: driver.version: unknown
remote stacktrace: #0 0x0040004b6479 <unknown>
Mein Setup:
- MacBook mit Apple M1, auf dem Big Sur 11.2.2 ausgeführt wird
- Ruby-Version 2.7.2
- ChromeDriver 89.0.4389.23 (für m1-Chip)
- Chrome-Version 89.0.4389.72 (offizieller Build) (arm64)
selenium-webdriver
Gem-Version 3.142.3- Ausführen eines Dockers selenium/standalone-chrome-debug:3.141.59-zinc
Ich habe schon einiges ausprobiert :
- Hinzufügen
--headless
von ,--no-sandbox
Optionen zuargs
:args => ['--headless', '--no-sandbox' ...
- Installieren von Chromedriver und Chrome über Brew, anstatt Binärdateien herunterzuladen
- Chrome und Chromedriver neu installieren
- Explizite Angabe des Pfads zu Chrome und Chromedriver (
Selenium::WebDriver::Chrome.path = '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
undSelenium::WebDriver::Chrome.driver_path="/path/to/chrome_driver_binary/chromedriver"
)
Gibt es noch andere, die solche Probleme haben?
Lösung
Es stellte sich heraus, dass es mein Docker-Image ist, das die arm64-Architektur nicht unterstützt, also war es dieser Schritt:
Running a docker selenium/standalone-chrome-debug:3.141.59-zinc
.
Es gab kein Problem, wenn ich den Teil der Tests deaktivierte, der den Docker-Container verwendete. Ich kann mir vorstellen, dass dies nicht für jeden möglich ist, aber hoffen wir, dass es bald ein Selenium-Image geben wird, das die arm64-Architektur unterstützt.
Siehe Selen-Problem hier.
Beantwortet von – em0605
Antwort geprüft von – Willingham (FixError Volunteer)