Selenium (informatique)

Un article de Wikipédia, l'encyclopédie libre.
Selenium
Description de l'image Selenium.png.
Description de l'image Selenium IDE.png.
Informations
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 continueVoir et modifier les données sur Wikidata
État du projet Actif
Écrit en Java
Supporte les langages PHP, Python, Ruby, .NET, Perl, Java, Rust et Go
Système d'exploitation Microsoft WindowsVoir et modifier les données sur Wikidata
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]

  1. « Selenium - Web Browser Automation », sur www.seleniumhq.org (consulté le 20 avril 2017)
  2. Chaine complète de test avec Selenium IDE, Selenium RC et PHPUnit
  3. (en) Junade Ali, Mastering PHP Design Patterns, Packt Publishing Ltd, (lire en ligne)