Selenium (informatique)
Selenium
Créateur | Software Freedom Conservancy |
---|---|
Dernière version | 3.141.59 |
Version avancée | 4.0.0-alpha-7 |
Dépôt | https://www.selenium.dev |
Assurance qualité | Intégration continue |
État du projet | Actif |
Écrit en | Java |
Supporte les langages | PHP, Python, Ruby, .NET, Perl, Java, Rust et Go |
Système d'exploitation | Microsoft Windows |
Environnement | multiplateforme |
Type | Framework |
Licence | Licence Apache 2.0 |
Documentation | https://www.selenium.dev/documentation/en/grid/ |
Site web | https://www.selenium.dev/ |
Selenium est un framework de test informatique développé en Java.
Il permet d'interagir avec différents navigateurs web tel que Google Chrome grâce au chromedriver ou Mozilla Firefox avec Gecko de même que le ferait un utilisateur de l'application. Il entre ainsi dans la catégorie des outils de test dynamique (à l'inverse des tests statiques qui ne nécessitent pas l'exécution du logiciel) facilitant le test fonctionnel.
Il est associé à
- Selenium IDE, extension Firefox, pour l'utiliser ;
- Selenium WebDriver, successeur de Selenium Remote Control (RC) devenu depuis officiellement obsolète[1]. Il permet d'écrire des tests automatisés en différents langages (PHP, Python, Ruby, .NET, Perl, Java, Rust et enfin Go).
Exemples de tests avec Selenium[modifier | modifier le code]
En PHP :
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
class CategoryModifTest extends PHPUnit_Extensions_SeleniumTestCase
{
protected function setUp()
{
$this->setBrowser("*firefox");
$this->setBrowserUrl("http://...");
}
public function testCategoryModif()
{
$this->open("http://...");
$this->type("modlgn_username", "admin");
$this->type("modlgn_passwd", "password");
$this->click("link=Connexion");
$this->waitForPageToLoad("30000");
$this->open("http:.../administrator/index.php?...");
$this->waitForPageToLoad("30000");
$name = $this->getTable("//div[@id='element-box']/div[2]/form/table.2.2");
$this->click("link=".$name);
$this->waitForPageToLoad("30000");
$this->type("name", "Ordinateurs portables modifié");
$this->click("//td[@id='toolbar-save']/a/span");
$this->waitForPageToLoad("30000");
try {
$this->assertTrue($this->isTextPresent("Ordinateurs portables modifié"));
} catch (PHPUnit_Framework_AssertionFailedError $e) {
array_push($this->verificationErrors, $e->toString());
}
$this->click("link=Ordinateurs portables modifié");
$this->waitForPageToLoad("30000");
$this->type("name", "Ordinateurs portables");
$this->click("//td[@id='toolbar-save']/a/span");
$this->waitForPageToLoad("30000");
$this->click("link=Déconnexion");
$this->waitForPageToLoad("30000");
}
}
Ou en Rust :
// ici on déclare le packet selenium_webdriver.
use selenium_webdriver::*;
// Le point de départ
fn main() {
// ici ça permet uniquement de créé une session et le navigateur indiqué est Chrome.
let mut driver = Browser::start_session(BrowserName::Chrome, "--disable-popup-blocking", "--disable-extensions");
// selenium va s'en chargé d'ouvrir une nouvelle page.
driver.open("https://www.wikipedia.org/").unwrap();
// ça permet uniquement de rechercher la barre de recherche.
let search = driver.find_element(LocatorStrategy::CSS("#searchInput" as &'static str)).unwrap();
// ça permet uniquement de taper Selenium (informatique) dans la barre de recherche.
let _ = search.send_keys(&"Selenium (informatique)");
// selenium va chercher le bouton.
let btn = driver.find_element(LocatorStrategy::CSS("input[type=submit]" as &'static str)).unwrap();
// et il va clicker !
btn.click();
}
Interopérabilité[modifier | modifier le code]
En PHP, Selenium s'interface avec PHPUnit[2], voire avec Behat (en) en utilisant la bibliothèque Mink[3].
Références[modifier | modifier le code]
- « Selenium - Web Browser Automation », sur www.seleniumhq.org (consulté le 20 avril 2017)
- Chaine complète de test avec Selenium IDE, Selenium RC et PHPUnit
- (en) Junade Ali, Mastering PHP Design Patterns, Packt Publishing Ltd, (lire en ligne)