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
- 1. Selenium RC: Esegui test in più browser automaticamente
- 2. Selenium RC supporta IE8?
- 3. Selenium RC Problemi con XPath
- 4. Cattura di browser con selenio RC
- 5. Selenium-rc: Come usi CaptureNetworkTraffic in python
- 6. Come eseguire Google Chrome con Selenium RC?
- 7. È possibile collegare il browser Web Selenium alla finestra del browser già aperta?
- 8. Selenium RC> come caricare il file usando attachFile()
- 9. Perché il selenio RC è così lento?
- 10. Per utilizzare il driver Web Selenium o il selenio RC
- 11. Selenium RC e eventi di controllo input
- 12. Come utilizzare xpath in Selenium RC con JavaScript?
- 13. Selenium con browser Firefox headless in Windows
- 14. Differenza tra isElementPresent e isVisible in Selenium RC
- 15. Cancella browser Cookie con Selenium WebDriver Java binding
- 16. È possibile nascondere il titolo da un collegamento con CSS?
- 17. È possibile eseguire script Selenium senza che sia in esecuzione anche un server X?
- 18. Selenium Grid2 - È possibile eseguire 10 istanze di Chrome?
- 19. Come ottenere il browser sessionId usando il selettore web Selenium
- 20. È possibile eseguire un elemento next in Selenium
- 21. È possibile "nascondere" le estensioni della lingua?
- 22. È possibile utilizzare std :: rc :: Rc con un tipo di tratto?
- 23. Proxy per selenio driver rc in java
- 24. Errori JavaScript Catch in Selenium WebDriver - Indipendente dal browser
- 25. Selenium WebDriverJS, non è possibile creare webdriver per Chrome
- 26. Cambia browser predefinito in Visual Studio 2010 RC
- 27. Come eseguire più browser Selenium Firefox contemporaneamente?
- 28. Esiste un Selenium WebDriver disponibile per il browser Microsoft Edge?
- 29. Selenium-Firefox: il browser Firefox si blocca durante l'esecuzione del mio script Selenium
- 30. Impossibile aprire il browser con Selenium dopo l'aggiornamento di Firefox
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). –