2016-08-22 1 views
2

Ich führe Automatisierungstests auf Selenium WebDriver als JUnit Tests von IntellijIdea durch. Wenn ein Browser geöffnet wird und einige Aktionen ausgeführt werden, bringt es sich immer nach vorne, auch wenn ich auf ein anderes Fenster getippt habe. Das ist nicht sehr praktisch. Einige Tests werden für einige Minuten ausgeführt und ich möchte gerne einige andere Aufgaben ausführen, während sie ausgeführt werden. Oder wenn ich die ganze Suite laufen möchte, kann ich nicht einfach 30 Minuten lang sitzen und zuschauen.Wie wird das Browserfenster im Hintergrund ausgeführt, wenn JUnit mit Selenium WebDriver von IntelliJ Idea ausgeführt wird?

Ich begann dieses Problem zu haben, nachdem ich von Windows OS zu Linux Mint wechselte. Unter Windows blieb der Browser im Hintergrund und störte mich nicht. Gibt es eine Möglichkeit, ein solches Verhalten auf Linux Mint OS zu konfigurieren?

Ich habe bereits versucht, den Browser/IntelliJ Idee in einem separaten LinuxMint-Arbeitsbereich auszuführen, hilft nicht. Das Browserfenster erscheint im anderen Arbeitsbereich, sobald dort etwas ausgeführt wird. Auch habe ich diese config in LinuxMint Fenstern Verhalten Einstellungen: enter image description here

+0

Dies kann betriebssystemspezifisch sein (aber ich habe ein ähnliches Problem, aber auf OSX und nicht auf Linux). Vielleicht versuchen Sie, das Problem zu umgehen, indem Sie phamtomjs (https://github.com/detro/ghostdriver) verwenden, wenn das immer noch mit dem neueren Webdriver-Protokoll funktioniert. Leider ist das keine gute Lösung, wenn Sie tatsächlich den eigentlichen Browser benötigen (zB für browserspezifische Bedingungen/Tests). – Chii

+0

Chii, Phantomjs ist keine Option für mich. Ich brauche wirklich Browser und eine Menge Sachen drin. –

Antwort

0

Selen keine in Verfahren gebaut haben für den Browser zu minimieren, jedoch können Sie aus den Augen nehmen, indem Sie:

driver.manage().window().setPosition(new Point(-2000, 0)); 

Während dieser 'Hack' das Browserfenster außer Sichtweite bringt, wird der Browser nach der Initialisierung des Treibers für einen kurzen Moment sichtbar.

+0

Mögliche geringfügige Unannehmlichkeiten: Dies kann eine gute Lösung sein, wenn das Browserfenster nicht richtig fokussiert wird. In diesem Fall müssten Sie auch auf das zuvor aktive Fenster klicken. – Morfic

+0

Ich habe es gerade ausprobiert und es hilft nicht. Es stehlt immer noch den Fokus auf das Browserfenster, aber jetzt sind einige Elemente der Seite für den Treiber nicht sichtbar und Tests scheitern dann mit Ausnahmen. Danke für die Idee. –

1

Versuchen Sie es mit RemoteDriver und es wird Code mit minimiertem Browser ausführen. Geben Sie Ihre localhost-IP als Hostadresse an. Code würde so aussehen.

try { 


    capabilities = DesiredCapabilities.chrome(); 
     capabilities.setCapability("chrome.switches", Arrays.asList(
       "--start-maximized", "--disable-popup-blocking")); 
     System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "/BrowserDrivers/chromedriver.exe"); 
     // Code to faster execution on Chrome 
     ChromeOptions chromOpt = new ChromeOptions(); 
     chromOpt.addArguments("Proxy","null"); 
     capabilities.setCapability(ChromeOptions.CAPABILITY,chromOpt); 
     driver = new RemoteWebDriver(new URL("http://127.0.0.1:5555/wd/hub"), capabilities);*/ 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
+0

QA Square, Ich habe noch nicht mit einem RemoteWebriver gearbeitet, aber was ich von Docs sehe, ist, dass es benötigt wird, wenn ich mit Selenium Grid arbeiten möchte, d. H. Wenn ich Tests auf verschiedenen Rechnern durchführen möchte. In meinem Fall führe ich Tests auf einem Rechner aus und benutze FirefoxDriver. Wie ich an Ihrem Beispiel sehe, wenn ich einen RemoreWebDriver instanziiere, kann ich einstellen, dass er mit dem Chrome-Browser funktioniert, und ich gehe davon aus, dass ich auch Firefox verwenden kann. Aber Sie übergeben auch eine URL an den Treiberkonstruktor. Was ist diese URL? Ich möchte Selenium Grid nicht verwenden. –

+0

Sie benötigen kein Selen Grid, um remoteDriver ausführen zu können, wenn Sie auf einer einzelnen Maschine oder auf Ihrer eigenen Maschine laufen möchten. Versuchen Sie den Code, den ich eingefügt habe, es wird funktionieren. –

+0

Kann ich sehen, was im Browser passiert, wenn ich etwas sehen muss? –

0

Es scheint, dass Lösungen Sie suchen virtuelle Anzeige aufgerufen wird, müssen Sie virtuelle Anzeige erstellen und dort Ihre Tests auszuführen. Suchen Sie nach xvfb. Ich bin jedoch nicht zu 100% mit Chrome kompatibel. Eine andere Option, die Sie haben, ist, eine virtuelle Maschine (unter Verwendung von beispielsweise virtualbox) unter Linux zu erstellen und Selen Grid zu verwenden, um eine Verbindung herzustellen.

+0

Mikhail, ich habe xvbf benutzt, als ich Tests auf einer kopflosen Linux-Maschine durchführen musste. Jetzt suche ich nur nach einer Lösung, die den Fokus nicht auf das Browserfenster verlagert, wenn Tests dort laufen. –

2

Ab dieser Woche (Chrom 57 oder höher) ist es möglich, chrome in headless mode zu laufen. Dazu übergeben Sie einfach die --headless-Flagge.

dieses Flag gelangen über Selen Chrom WebDriver Sie den folgenden Code verwenden:

.. vollständig obwohl Fokus löst
ChromeOptions options = new ChromeOptions(); 
options.addArguments("--headless"); 

ChromeDriver chromeDriver = new ChromeDriver(options); 

Ich bin nicht sicher, ob das Problem dort in meinem Fall ist immer noch ein Chrom Fenster stehlen Fokus, aber ich denke, es ist eine große Verbesserung, da das Fenster nicht vor mir auftaucht.

Ich denke, es ist definitiv einen Versuch wert. Ich werde weiterhin auf das Fokusproblem schauen und aktualisieren, wenn ich etwas finde.

+0

Ich habe versucht, und habe diese Ausnahme: 'Eine Ausnahme oder Fehler einen Lauf verursacht abzubrechen: unbekannten Fehler: kann nicht Automatisierung Erweiterung unbekannten Fehler: Seite kann nicht gefunden werden: Chrom-Erweiterung: // aapnijgdinlhnhlmodcfapnahmbfebeb/_generated_background_page. html' –

+0

Was sind Ihre Chromedriver und Selenium Versionen? Ich habe folgendes gefunden: https://github.com/SeleniumHQ/selenium/issues/3508 Scheint, als gäbe es noch einige Kompatibilitätsprobleme bezüglich Selenium, chromedriver und chrome. 57 – in016hoe

+0

Außerdem gehe ich davon aus, dass du deine Chrome-Version aktualisiert und aktiviert hast der kopflose Modus "zur gleichen Zeit" ist das wahr? Verhält es sich genauso, wenn Sie die kopflose Flagge nicht hinzufügen? – in016hoe

Verwandte Themen