6

Ich habe Chrome arbeiten kopflos über einen Selen-Server durch Ausführen von xvfb gebunden an DISPLAY: 10 und dann Selen mit einer DISPLAY=:10 webdriver-manager start ausgeführt. Das ist alles in Ordnung.Wie kann ich Chrome kopflos von Winkelmesser ohne Verwendung eines Selenium-Servers

Ich habe auch Chromedriver läuft direkt von Winkelmesser durch Angabe directConnect: true in meinem Winkelmesser.conf.

Was ich gerne tun würde, ist eine Kombination der beiden, dh. laufe direkt mit chromecriver (KEIN SELENIUM!), aber weis irgendwie, dass er kopflos auf DISPLAY läuft: 10.

In Bezug auf Topologie wird alles auf dem Entwickler-PC ausgeführt. Es sind keine Server beteiligt. In einem Kommentar unten erwähne ich einen Knoten-Server: Dies wird verwendet, um Winkelmesser statt der üblichen Start von der Kommandozeile aus zu starten. Ich möchte, dass der Winkelmesser auf DISPLAY läuft: 0, damit ich seine Ausgabe sehen kann, Fehler testen usw. Wenn Chrome mit Chrom-Driver erzeugt wird, möchte ich, dass Chrome auf DISPLAY läuft: 10. Mein Grund dafür ist, dass das Chromfenster größer sein soll als mein physikalischer Bildschirm. Siehe How can I screenshot the full height of a mobile form factor? für Hintergrund.

+0

Hallo Andrew. Es funktioniert nicht, weil ich nicht weiß, wie ich es versuchen soll.Ich kann nirgendwo das Ziel-DISPLAY für die gestartete Chrome-Instanz konfigurieren. – pinoyyid

+0

Java kommt nicht dazu. Winkelmesser ist eine Knotenanwendung. DISPLAY für die Knotenanwendung ist DISPLAY =: 0, weil Winkelmesser auf meiner X-Anzeige läuft. Es ist, wenn Winkelmesser den chromedriver spawnt, dass ich den chromedriver mit DISPLAY verbinden möchte = 10 – pinoyyid

+0

Entschuldigung, gelöschter verwirrender Kommentar. Offensichtlich fest im Java-Modus ... –

Antwort

2

Ich hatte ein "Doh !!!" Moment des Zen und die ganze Sache ist viel einfacher, als ich dachte, es wäre.

Ich hatte die Standardausgabe von Knoten/Winkelmesser (die ich auf meinem Bildschirm will) mit dem X-Display von Chrom (die ich will kopflos auf DISPLAY: 10). Natürlich sind sie total verschieden !!!!

Einfach Winkelmesser mit DISPLAY =: 10 z.

DISPLAY=:10 protractor /installation_test/conf-c-direct-noserver.js 

oder, in meinem Fall, da ich einen Knoten Server renne was wiederum laicht Winkelmesser, ...

DISPLAY=:10 npm start 

So läuft Winkelmesser meines Terminal in und ich stdout beobachten kann, während der DISPLAY =: 10 wird von den Anrufschichten geerbt und schließlich von Chrome erkannt und verstanden.

2

ich die Topologie bin zu raten, ist wie folgt:

  • Box A: xvfb, DISPLAY=:10, Selenium Server, chromedriver
  • Box B: DISPLAY=:0, Knoten, Winkelmesser (directConnect: true), chromedriver
  • Kasten C: Testläufer.

Ich weiß nicht, wie könnte es anders angelegt gegeben werden, dass DISPLAYis an environment variable, kein Parameter übergeben werden.

In diesem Fall vorausgesetzt, Sie benötigen keine separate xvfb auf Box B installiert werden soll, und A ist erreichbar (plus eine anständige Verbindung) von B, ist die Lösung einfach zu setzen:

DISPLAY=boxAHost:10 

auf Box B.

Wenn A nicht von B aus erreichbar ist, kann es am einfachsten sein, einfach das xvfb Setup auf A und B zu duplizieren und DISPLAY=:10 auf beiden zu haben.

+0

sehe meine Updates zu der Frage, es gibt nur eine einzige Box. Umgebungsvariablen können für einen Prozess spezifisch gemacht werden, zB "DISPLAY =: 10 Winkelmesser" – pinoyyid

+0

Jede Möglichkeit, dass Sie einen Link zu Informationen über die Möglichkeit, einen Prozess zu verlinken (vielleicht auf Ihrer Antwort) teilen könnten? Ich konnte es nirgendwo dokumentiert finden. –

+0

Entschuldigung @Andrew, ich verstehe Ihre Frage nicht "Link zu einem Prozess". Wenn Sie klären können, werde ich gerne alle Informationen zur Verfügung stellen, die ich habe. Meinst du; Rufen Sie ChromeRiver direkt und nicht über einen Selenium-Server auf? Wenn ja, ist es dokumentiert https://github.com/angular/protractor/blob/master/docs/referenceConf.js siehe Zeile 91 'directConnect: false,' – pinoyyid