{"id":19006109,"url":"https://github.com/danielsan80/playing-with-selenium","last_synced_at":"2026-06-23T13:32:18.545Z","repository":{"id":142023512,"uuid":"356837985","full_name":"danielsan80/playing-with-selenium","owner":"danielsan80","description":null,"archived":false,"fork":false,"pushed_at":"2021-04-11T10:42:17.000Z","size":33,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-30T16:36:05.402Z","etag":null,"topics":["php","post","selenium","ubuntu"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danielsan80.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-11T10:33:37.000Z","updated_at":"2021-04-11T11:27:38.000Z","dependencies_parsed_at":"2023-07-11T20:47:09.126Z","dependency_job_id":null,"html_url":"https://github.com/danielsan80/playing-with-selenium","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/danielsan80/playing-with-selenium","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielsan80%2Fplaying-with-selenium","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielsan80%2Fplaying-with-selenium/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielsan80%2Fplaying-with-selenium/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielsan80%2Fplaying-with-selenium/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danielsan80","download_url":"https://codeload.github.com/danielsan80/playing-with-selenium/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielsan80%2Fplaying-with-selenium/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34691773,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-23T02:00:07.161Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["php","post","selenium","ubuntu"],"created_at":"2024-11-08T18:30:22.947Z","updated_at":"2026-06-23T13:32:18.527Z","avatar_url":"https://github.com/danielsan80.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"*data: 2014-02-10*\n\nGiocando con Selenium\n=====================\n\n![https://commons.wikimedia.org/wiki/File:Elektronskal_34.png](images/selenio.png)\n\nE’ parecchio che conosco [Selenium](https://www.selenium.dev), credo dal 2009 quando l’ho visto usare in un workshop\ndi [Francesco Trucchia](https://www.francescotrucchia.it) al [PHPDay](http://2013.phpday.it) in quel di Verona.\nFrancesco ci mostrava come si poteva rifattorizzare un’applicazione dopo averne ingabbiato\nil comportamento con test funzionali.\n\n*Traduzione: prima di modificare il codice di un’applicazione che non conosci,\nmagari scritta male, generalmente da un’altro, è buona norma scrivere un programma\nche simuli l’intervento dell’utente e svolga tutte le operazioni\npiù importanti sull’applicazione stessa.*\n\nCon Selenium è possibile pilotare il browser e quindi muoversi tra le pagine di un sito,\ncompilare form, cliccare link, draggare elementi.\nQuando facciamo questo sulla nostra applicazione stiamo eseguendo un test automatico\nper verificare che si comporti come ci aspettiamo.\nQuando invece lo facciamo su un altro sito per raggiungere delle informazioni\ned estrarle periodicamente, stiamo facendo web scraping.\n\nLa leggenda narra che con il Selenium IDE sia possibile registrare delle macro,\nmentre un utente reale esegue le operazioni sull’applicazione,\nper poi rieseguirle in un secondo momento e verificare che questa continui\na comportarsi nello stesso modo, nonostante il programmatore\nabbia cambiato la sua struttura interna.\n\nAd oggi questo mito è stato ormai sfatato poiché è evidente che il modo più\npratico per utilizzare Selenium è quello di programmare manualmente le operazioni\nda eseguire attraverso una delle varie librerie a disposizione per ciascuno\nlinguaggio di programmazione.\n\nPer funzionare Selenium deve poter pilotare un browser, ad esempio Firefox,\ned un browser ha bisogno di un ambiente grafico per funzionare.\nSu un server web però non abbiamo un ambiente grafico.\nSul proprio computer invece è piuttosto difficile ed irritante fare qualsiasi\naltra cosa mentre Firefox continua ad aprirsi, *sbilinare* e chiudersi da solo.\n\nPossiamo però simulare l’ambiente grafico e dire a Selenium di usarlo.\nLa parolina magica, suggeritami da [Giorgio Sironi](https://github.com/giorgiosironi)\nall’[AgileDay2013](https://www.agileday.it/), è **xvfb**.\n\nInstalliamo [Xvfb](https://www.x.org/releases/current/doc/man/man1/Xvfb.1.xhtml)\ne facciamo in modo che venga lanciato all’avvio della macchina:\n\n```\nsudo apt-get install xvfb\nsudo vim /etc/init.d/xvfb\n```\n\n```\n# /etc/init.d/xvfb\n\n#!/bin/bash\n\nif [ -z \"$1\" ]; then\necho \"`basename $0` {start|stop}\"\nexit\nfi\n\ncase \"$1\" in\nstart)\n/usr/bin/Xvfb :99 -ac -screen 0 1024x768x8 \u003e /dev/null \u0026\n;;\n\nstop)\nkillall Xvfb\n;;\nesac\n```\n\n```\nsudo chmod 755 /etc/init.d/xvfb\nvim ~/.bash_aliases\n```\n\n```\n# ~/.bash_aliases\n\n...\nalias xvfb='etc/init.d/xvfb'\n```\n\n```\nsudo /etc/init.d/update-rc.d xvfb default 10\n```\n\nOra è possibile avviare xvfb tramite il comando `xvfb start` e fermarlo tramite `xvfb stop`\n\nOra installiamo Selenium.\n\nScarichiamo da [https://www.selenium.dev/downloads](https://www.selenium.dev/downloads)\nl’ultima versione di **Selenium Server (formerly the Selenium RC Server)**:\n\nLo mettiamo tra le nostre librerie e poi facciamo la stessa cosa che abbiamo fatto per xvfb,\nne semplifichiamo l’esecuzione.\n\n```\nwget http://selenium.googlecode.com/files/selenium-server-standalone-2.39.0.jar\nsudo mkdir /var/lib/selenium\nsudo mv selenium-server-standalone-2.39.0.jar /var/lib/selenium\ncd /var/lib/selenium\nsudo ln -s selenium-server-standalone-2.39.0.jar selenium-server.jar\nsudo vim /etc/init.d/selenium\n```\n\n```\n# /etc/init.d/selenium\n\n#!/bin/bash\n\nif [ -z \"$1\" ]; then\necho \"`basename $0` {start|stop}\"\nexit\nfi\n\nexport DISPLAY=\":99\"\ncase \"$2\" in\nshow)\nexport DISPLAY=\":0\"\n;;\nesac\n\ncase \"$1\" in\nstart)\njava -jar /var/lib/selenium/selenium-server.jar -browserSessionReuse \u003e /dev/null \u0026\n;;\n\nstop)\ncurl http://localhost:4444/selenium-server/driver/?cmd=shutDownSeleniumServer\n;;\nesac\n```\n\n```\nsudo 755 selenium\nvim ~/.bash_aliases\n```\n\n```\n# ~/.bash_aliases\n...\nalias selenium='etc/init.d/selenium'\n```\n\nOra è possibile avviare selenium nell’ambiente grafico generato da xvfb con\nil comando selenium start oppure in quello reale (se c’è) con `selenium start show`,\ne fermarlo con `selenium stop`\n\nIn alcuni casi potrebbe essere interessante lanciarlo all’avvio del server:\nlo si può fare con\n\n```\nsudo /etc/init.d/update-rc.d selenium default 20\n```\n\nSe non l’avete fatto non rimane che installare Firefox\n\n```\nsudo apt-get install firefox\n```\n\nOra possiamo creare test funzionali con\n[Selenium2 PHPUnit Extension](http://phpunit.de/manual/3.7/en/selenium.html) oppure\nfar web scraping con [Mink](http://mink.behat.org).\n\nQuesto articolo non è altro che un’assemblaggio ed una personalizzazione\ndelle pratiche lette nei seguenti:\n\n- [http://www.installationpage.com/selenium/how-to-run-selenium-headless-firefox-in-ubuntu/](http://www.installationpage.com/selenium/how-to-run-selenium-headless-firefox-in-ubuntu/)\n\n- [http://www.labelmedia.co.uk/blog/setting-up-selenium-server-on-a-headless-jenkins-ci-build-machine.html](http://www.labelmedia.co.uk/blog/setting-up-selenium-server-on-a-headless-jenkins-ci-build-machine.html)\n\n- [http://testerinyou.blogspot.it/2011/05/run-selenium-rc-using-command-prompt.html](http://testerinyou.blogspot.it/2011/05/run-selenium-rc-using-command-prompt.html)\n\nDirei che è tutto. Ciao!\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielsan80%2Fplaying-with-selenium","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanielsan80%2Fplaying-with-selenium","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielsan80%2Fplaying-with-selenium/lists"}