Ich habe dieses Problem mit Selen-Webdriver-Tests mit Chrom-Treiber. Obwohl ich Tests erfolgreich mit dem Chrome-Browser ausführen kann, kann ich nicht die gleichen Tests im Headless-Modus ausführen.
Ich kann die Js-Warnungen nicht verarbeiten. Bei der Erstellung eines Screenshots scheint der Alarm nicht einmal auftauchen zu können.
Ich habe mehrere Problemumgehungen ausprobiert:
1) driver.window_handles
- & gt; Kein anderes Fenster scheint vorhanden zu sein
2) driver.execute_script("window.confirm = function(){return true;}")
- & gt; Mit diesem Skript hat sich nichts geändert.
3) element = WebDriverWait(driver, 20).until(EC.alert_is_present())
und natürlich eine explizite Wartezeit
Im Browser-Modus verwende ich eine Ebene:
%Vor%Hat noch jemand dieses Problem mit Warnungen im Headless-Modus?
Da Chrome immer noch dieses Problem hat, habe ich eine Weile nach einer anderen Lösung gesucht. Mein Favorit wegen seiner Einfachheit ist die Injektion von Javascript, bevor die Warnung angezeigt wird, um die Warnung automatisch zu akzeptieren.
Fügen Sie einfach die folgende Codezeile vor in die Zeile ein, in der die Warnung angezeigt wird:
%Vor%Funktioniert mit Headless Chrome und PhantomJS.
Es scheint, dass ich das gleiche Problem habe, wenn ich Headless-Chrom spiele. Das Warnfenster erscheint nicht auf Basis der Screenshots. Es funktioniert gut auf Chrom, aber nicht kopflos Chrom.
Ich laufe auf Chrom 60.0.3112.72 und Chrome-Treiber 2.30
Weil der kopflose Chrome automatisch Warnmeldungen verwirft. Überprüfen Sie dies: Ссылка
Übrigens, wie kommt es, dass Sie im Headless-Modus in Chrom 59 screenen können? chrome 59 hat einen Fehler, der dazu führt, dass jeder Bildschirm im Headless-Modus ein 1x1-Pixel-Bild aufnimmt. Daher habe ich Chrome 60 hinzugefügt.
Tags und Links selenium-webdriver selenium-chromedriver google-chrome-headless