Uso Selenium RC per automatizzare alcune operazioni del browser ma voglio che il browser sia invisibile. È possibile? Come? E riguardo la griglia del selenio? Posso nascondere anche la finestra di Selenium RC?È possibile nascondere il browser in Selenium RC?
risposta
Ci sono alcune opzioni:
Si potrebbe utilizzare selenio griglia in modo che il browser si apre su una macchina completamente diversa (o macchina virtuale) che si può quindi collegarsi a via VNC o Remote Desktop Connection se volevi vedere 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 'headless' su Linux in XVFB. Non ho mai provato a farlo e dubito ne valga davvero la pena. http://www.alittlemadness.com/2008/03/05/running-selenium-headless/
È possibile avvolgere Selenium RC in un servizio di Windows. http://support.microsoft.com/kb/137890. Tranne che i vincoli delle autorizzazioni sulle versioni successive di Windows probabilmente impediranno al Selenium di accedere al desktop come Windows 2000 usato per permetterci di farlo.
Un'altra opzione sarebbe utilizzare qualcosa come WebDriver HTMLUnitDriver, che non avvia un browser "reale". http://code.google.com/p/webdriver/. Inoltre, è disponibile un'opzione PhantomJS e un 'Chrome senza testa' che è possibile utilizzare.
Ovviamente c'è anche la possibilità di utilizzare un servizio come SauceLabs, dove è possibile eseguire i test nel cloud. Una volta completati i test, puoi guardare un video in esecuzione.
Ecco le istruzioni su come creare un file bat per installare il servizio: http://brantleytec.blogspot.com/2012/11/selenium-hub-and-node-as-windows-service.html –
+1 per Selenium RC come servizio di Windows.
Per avere i test eseguiti completamente nascosti, penso che non si abbiano molte soluzioni se si è su Windows.
Cosa farei per dedicare un computer nella LAN a essere sempre in linea e a far funzionare un server RC di selenio. 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 questo è l'IP del computer che esegue il server).
Avendo questa configurazione, si eseguono i test nel proprio computer, i browser e la finestra del server RC si trovano su un altro computer e si torna al proprio una volta terminato.
Se si utilizza Windows, un'opzione è eseguire i test con un altro account utente. Ciò significa che il browser e il server java non saranno visibili al tuo account.
Su Linux, è possibile eseguire WebDriver in un display (virtuale) senza testa per nascondere il browser. Questo può essere fatto con Xvfb (X framebuffer virtuale).
È possibile controllare Xvfb direttamente dal codice Python utilizzando xvfbwrapper
: https://github.com/cgoldberg/xvfbwrapper
codice Python per l'esecuzione senza testa sarebbe simile a questa:
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()
installare le dipendenze su Debian/Ubuntu:
$ sudo apt-get install xvfb
$ pip install xvfbwrapper
Ha funzionato come per magia su Ubuntu . Grazie per questo. – iChux
Bella soluzione e grazie per il tuo codice. – SuB
Quando il codice viene eseguito in un browser virtuale, posso continuare a utilizzare normalmente il mio PC mentre viene eseguito lo script di interazione del browser? – Mugen
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 conduzione -a mvn clean install
Ecco fatto
Questo è spesso il modo più semplice per garantire che xvfb sia in esecuzione e utilizzato da Selenium/WebDriver. –
Su Linux, è possibile eseguire il browser di test su un display virtuale. È necessario il pacchetto xvfb
per la creazione di un server X virtuale. Su distribuzioni basate su Debian, basta eseguire
sudo apt-get install xvfb
C'è un bel strumento ephemeral-x.sh
che comodamente impostare qualsiasi comando da eseguire sul display virtuale. Download it e renderlo eseguibile:
wget https://raw.github.com/jordansissel/xdotool/master/t/ephemeral-x.sh
chmod +x ephemeral-x.sh
allora si può semplicemente usare per avviare il server Selenio:
./ephemeral-x.sh java -jar selenium-standalone.jar
Tutte le finestre del browser creato da Selenio sarà ora utilizzare il display virtuale e sarà invisibile a voi .
'wget https: // raw.github.com/jordansissel/xdotool/master/t/ephemeral-x.sh' – pic
corretti URL, grazie. – pixelistik
Questo script ha un problema di quotatura. Se dico ./ephemeral-x.sh foo '*' dice "Running: foo" seguito dal contenuto della mia directory. –
Esiste un progetto correlato PhantomJS denominato GhostDriver, che è destinato all'esecuzione di istanze PhantomJS in una griglia selenio utilizzando il protocollo JSON del webdriver wire. Questo è probabilmente quello che stai cercando, anche se questa domanda ora ha 4 anni.
Sono riuscito facilmente a nascondere la finestra del browser.
Solo install PhantomJS. Quindi, modificare questa riga:
driver = webdriver.Firefox()
a:
driver = webdriver.PhantomJS()
Il resto del codice non avrà bisogno di essere cambiato e si aprirà nessun browser. Per scopi di debug, utilizzare driver.save_screenshot('screen.png')
in diversi passaggi del codice.
Vale la pena ricordare che è necessario inserire il percorso di PhantomJs.exe affinché funzioni. esempio 'driver = webdriver.PhantomJS (r" C: \\ phantomjs \ phantomjs.exe ")' –
Sì, ma solo su Windows. –
non è necessario specificare la posizione del file binario finché è possibile trovarlo dalla variabile di ambiente $ PATH dell'ambiente. –
Su MacOSX, non sono stato in grado di nascondere la finestra del browser, ma almeno ho capito come spostarlo su un display diverso in modo che non interrompa il mio flusso di lavoro così tanto. Mentre Firefox è in esecuzione test, basta controllare clic sulla sua icona nel Dock, selezionare Opzioni e assegnare 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
Tra l'altro questa è una caratteristica necessaria per qualsiasi e2e eseguendo sviluppatore che logicamente si riproducono i browser .In un ambiente di sviluppo è fastidioso occuparsi della finestra che continua a comparire e di ciò che si può interagire accidentalmente facendo fallire il test.
In molti casi PhantomJS non si adatta perfettamente alle vostre esigenze, vorrei approfondire l'opzione senza testa cromata menzionata nella risposta di Dave Hunt.
chrome 57 ha appena lanciato questa funzione. Puoi usarlo passando il flag --headless tramite ChromeDriver, per maggiori informazioni vedi la discussione in this question
Potrebbe non essere accettabile, ma come non potresti semplicemente spostare il browser fuori dallo schermo (usando l'automazione dell'interfaccia utente di Windows?) come posizionare la finestra su (-10000, -10000)? – BrainSlugs83
Poiché questa domanda è vecchia ora, permettimi di reindirizzarti verso una risposta aggiornata corretta [in fondo a questa pagina] (http://stackoverflow.com/a/23898054/1515819). –