Selenium est un framework de test informatique développé en Java qui offre des passerelles pour s'exécuter avec différents langages comme Python et PHP.

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/

Il permet d'interagir avec différents navigateurs web tel que Google Chrome grâce au chromedriver[1] ou Mozilla Firefox avec le geckodriver[2] 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é à :

Il affiche de fortes similitudes avec Cypress, une solution concurrente[réf. souhaitée].

Exemples de tests avec Selenium

modifier

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");
  }
}

En Rust :

// On déclare le packet selenium_webdriver.
use selenium_webdriver::*;

// Le point de départ
fn main() {
    // Cela permet de créer un pilote de navigateur et le navigateur indiqué est Chrome.
    let mut driver = Browser::start_session(BrowserName::Chrome, "--disable-popup-blocking", "--disable-extensions");
    // Le pilote va se charger d'ouvrir une nouvelle page.
    driver.open("https://www.wikipedia.org/").unwrap();
    
    // Cela permet de rechercher la barre de recherche.
    let search = driver.find_element(LocatorStrategy::CSS("#searchInput" as &'static str)).unwrap();
    // Cela permet de taper 'Selenium (informatique)' dans la barre de recherche.
    let _ = search.send_keys(&"Selenium (informatique)");
    // Le pilote va chercher le bouton
    let btn = driver.find_element(LocatorStrategy::CSS("input[type=submit]" as &'static str)).unwrap();
    // Et il va cliquer ! 
    btn.click();
}

En Python :

# Créer une session Chrome
driver = webdriver.Chrome()
driver.implicitly_wait(30)
driver.maximize_window()

# Appeler l’application web
driver.get("http://www.wikipedia.org")
driver.implicitly_wait(30)

# Localiser la zone de texte
search_field = driver.find_element(By.CSS_SELECTOR, "#searchInput")
search_field.clear()
driver.implicitly_wait(30)

# Saisir et confirmer la recherche
search_field.send_keys("Selenium (informatique)")
search_field.submit()
driver.implicitly_wait(30)

#Renvoie le titre de la page et son lien
print('Le titre de la page est {0}, et le lien est {1}'.format(driver.title, driver.current_url))

# Fermer la fenêtre du navigateur
driver.quit()

Ou en Javascript :

// Utilisation de la librairie npm selenium-webdriver
const {Builder, By} = require('selenium-webdriver');

// Instanciation du web driver qui va piloter Firefox (geckodriver)
const driver = new Builder().forBrowser('firefox').build();

// Charge la page
driver.get('https://www.wikipedia.org/');

// Recherche l'élément dans la page pour saisir la recherche 
driver.findElement(By.id('searchInput')).then(searchInput => {
  // Saisie de la recherche 
  searchInput.sendKeys('Selenium (informatique)');
  // Recherche le bouton dans la page pour envoyer la recherche 
  driver.findElement(By.css('button[type="submit"]')).then(submitBtn => {
    // Envoi de la recherche
    submitBtn.click();
  });
});

Interopérabilité

modifier

En PHP, Selenium s'interface avec PHPUnit[4], voire avec Behat (en) en utilisant la bibliothèque Mink[5].

Références

modifier
  1. « ChromeDriver - WebDriver for Chrome », sur chromedriver.chromium.org (consulté le 13 septembre 2021)
  2. « geckodriver — Firefox Source Docs documentation », sur firefox-source-docs.mozilla.org (consulté le 13 septembre 2021)
  3. « Selenium - Web Browser Automation », sur www.seleniumhq.org (consulté le 20 avril 2017)
  4. Chaine complète de test avec Selenium IDE, Selenium RC et PHPUnit
  5. (en) Junade Ali, Mastering PHP Design Patterns, Packt Publishing, 28 septembre 2016 (lire en ligne)

📚 Artikel Terkait di Wikipedia

Free and open source software developers' European meeting

Free Software Award à Guido van Rossum. Les 8 et 9 février. Remise du Free Software Award à Larry Lessig. Les 21 et 22 février. Remise du Free Software Award

Xvfb

the Testing Efficiency of Selenium-Based Load Tests », 2019 IEEE/ACM 14th International Workshop on Automation of Software Test (AST),‎ 2019, p. 14–20

Histoire des télécommunications

avec l'hypothèse commune de recours aux propriétés photoélectriques du sélénium. En décembre 1901, Guglielmo Marconi réalisa la première transmission radio

Navigateur headless

SlimerJS utilise le même langage que PhantomJS. Web scraping Web testing Selenium Automatisation de test "What is a headless browser?". arhg.net. "Quick

MaTeLo

l'utilisateur et permet de créer tout type de script, ou code exécutable, comme du Selenium, Java, Eggplant, UFT, python, XML, etc. Les opérations de test représentent

QF-Test

PrimeFaces, Qooxdoo, RAP, RichFaces, Vaadin et ZK. L'intégration aisée avec Selenium permet d'équilibrer facilement le développement et les tests fonctionnels

Web scraping

informatique et d'autres non. On peut les classer en : logiciels SaaS, Software as a Service (Logiciel en tant que Service), installés sur un serveur distant

Mercure (chimie)

est une cause de dermatite de contact allergique. Certains composés du sélénium affectent la cinétique des composés inorganiques et du méthylmercure et