Domanda

Sto usando Selenium RC per automatizzare alcune operazioni del browser ma voglio che il browser sia invisibile. È possibile? Come? Che dire di Selenium Grid? Posso nascondere anche la finestra Selenium RC?

È stato utile?

Soluzione

Ci sono alcune opzioni:

  • È possibile utilizzare Selenium Grid in modo che il browser venga aperto su una macchina (o macchina virtuale) completamente diversa a cui è possibile connettersi tramite VNC o Connessione desktop remoto se si desidera visualizzare il browser. Inoltre, un'altra opzione: se si esegue un processo in primo piano Jenkins su quel server remoto, è possibile eseguire il progetto di test sul desktop.

  • È possibile eseguire Selenium "senza testa" su Linux in XVFB. Non ho mai provato a farlo e dubito che valga davvero la pena. http://www.alittlemadness.com/2008/03/05/ running-selenio senza testa /

  • È possibile avvolgere Selenium RC in un servizio di Windows. http://support.microsoft.com/kb/137890 . Ad eccezione del fatto che i vincoli delle autorizzazioni sulle versioni successive di Windows probabilmente impediranno a Selenium di accedere al desktop come Windows 2000 ci consentiva di fare.

  • Un'altra opzione sarebbe quella di utilizzare qualcosa come WebDriver HTMLUnitDriver, che non avvia un browser "reale". http://code.google.com/p/webdriver/ . Inoltre c'è un'opzione PhantomJS e un 'Chrome senza testa' che potresti usare.

  • Naturalmente c'è anche la possibilità di utilizzare un servizio come SauceLabs, dove è possibile eseguire i test nel cloud. Dopo aver completato i test, puoi guardarne un video in esecuzione.

Altri suggerimenti

Su Linux, è possibile eseguire WebDriver in un display senza testa (virtuale) per nascondere il browser. Questo può essere fatto con Xvfb (X virtual framebuffer).

Puoi controllare Xvfb direttamente dal codice Python usando xvfbwrapper : https://github.com/cgoldberg/xvfbwrapper

Il codice Python per l'esecuzione senza testa sarebbe simile al seguente:

from selenium import webdriver
from xvfbwrapper import Xvfb

display = Xvfb()
display.start()

# now Firefox will run in a virtual display. 
# you will not see the browser.
driver = webdriver.Firefox()
driver.get('http://www.google.com')

print(driver.title)
driver.quit()

display.stop()

Installa le dipendenze su Debian / Ubuntu:

$ sudo apt-get install xvfb
$ pip install xvfbwrapper

Sono riuscito facilmente a nascondere la finestra del browser.

Solo installa PhantomJS . Quindi, modifica questa riga:

driver = webdriver.Firefox()

a:

driver = webdriver.PhantomJS()

Il resto del codice non dovrà essere modificato e nessun browser si aprirà. Ai fini del debug, utilizzare driver.save_screenshot ('screen.png') in diversi passaggi del codice.

+1 per Selenium RC come servizio di Windows.

Per avere i test completamente nascosti, penso che tu non abbia molte soluzioni se sei su Windows.

Cosa farei per dedicare un computer nella tua LAN ad essere sempre online e avere un server RC selenio in esecuzione. Quindi usi l'IP di quel computer invece di localhost per eseguire i tuoi test. Ad esempio:

browser = selenium("10.15.12.34",4444,"*firefox","http://saucelabs.com")

(considerando che quello è l'ip del computer che esegue il server).

Con questa configurazione, esegui i test sul tuo computer, i browser e la finestra del server RC si trovano in un altro computer e tornerai al tuo una volta terminato.

Su Linux, è possibile eseguire il browser di test su uno schermo virtuale. Per creare un server X virtuale avrai bisogno del pacchetto xvfb . Nelle distribuzioni basate su Debian, basta eseguire

sudo apt-get install xvfb

Esiste un ottimo strumento ephemeral-x.sh che imposterà comodamente qualsiasi comando da eseguire sul display virtuale. Scaricalo e renderlo eseguibile:

wget https://raw.github.com/jordansissel/xdotool/master/t/ephemeral-x.sh
chmod +x ephemeral-x.sh

Quindi puoi semplicemente usarlo per avviare il server Selenium:

./ephemeral-x.sh java -jar selenium-standalone.jar

Tutte le finestre del browser create da Selenium ora utilizzeranno il display virtuale e saranno invisibili per te.

Se sei su Windows, un'opzione è eseguire i test con un altro account utente . Ciò significa che il browser e il server java non saranno visibili sul tuo account.

Ecco come eseguo i miei test con Maven su un desktop Linux (Ubuntu). Mi sono stufato di non essere in grado di lavorare con il webdriver firefox sempre focalizzato.

Ho installato xvfb

  

xvfb-run -a mvn clean install

Questo è

In molti casi PhantomJS non soddisfa completamente le tue esigenze, vorrei approfondire l'opzione cromo senza testa menzionata nella risposta di Dave Hunt.

chrome 57 ha appena lanciato questa funzione. Puoi usarlo passando il flag --headless tramite ChromeDriver, per maggiori informazioni consulta la discussione in questa domanda

Esiste un progetto relativo a PhantomJS chiamato GhostDriver , che ha lo scopo di eseguire istanze PhantomJS in una griglia del selenio utilizzando il protocollo JSON filo webdriver. Questo è probabilmente quello che stai cercando, anche se questa domanda ha ormai 4 anni.

Su MacOSX, non sono stato in grado di nascondere la finestra del browser, ma almeno ho capito come spostarlo su uno schermo diverso in modo da non disturbare così tanto il mio flusso di lavoro. Mentre Firefox esegue i test, basta fare clic tenendo premuto il tasto Ctrl sulla relativa icona nel dock, selezionare Opzioni e Assegna a Display 2.

curl -k https://gist.githubusercontent.com/terrancesnyder/995250/raw/cdd1f52353bb614a5a016c2e8e77a2afb718f3c3/ephemeral-x.sh -o ~/ephemeral-x.sh
chmod +x ~/ephemeral-x.sh
~/ephemeral-x.sh TestsStarterCommand

A proposito, questa è una funzionalità richiesta da qualsiasi sviluppatore che esegue e2e che genererà logicamente i browser. In un ambiente di sviluppo è fastidioso avere a che fare con la finestra che si apre e che è possibile interagire accidentalmente facendo fallire il test.

L'uso di Chrome senza testa sarebbe la soluzione migliore, oppure potresti pubblicare direttamente sul sito per interagire con esso, il che risparmierebbe molta potenza di calcolo per altre cose / processi. Lo uso quando collaudo robot di automazione del web che cercano scarpe su più siti utilizzando elementi pesanti della cpu, maggiore è il risparmio energetico e più semplice è il programma, più è facile eseguire più processi contemporaneamente con muhc maggiore velocità e affidabilità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top