chromedriver kopflose Warnungen

8

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.

Alert-Screenshot

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?

  • chromedriver v.2.30.477691
  • Chrome-Version 59.0.3071.115
Alex Pas 21.07.2017, 16:10
quelle

3 Antworten

11

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.

    
Ruben van Kruistum 07.09.2017, 13:20
quelle
3

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.

    
Luyao Zhou 26.07.2017 06:47
quelle
0

Da Chrome Headless (derzeit) keine Warnmeldungen unterstützt, müssen Sie die Methoden alert() und confirm() überwachen. Dies ist der Ansatz, den ich verwendet habe (in C #):

%Vor%

Ich benutze es so:

%Vor%     
Ken Smith 28.07.2017 21:13
quelle