Selenium est une bibliothèque d’automatisation de navigateur. Le sélénium est le plus couramment utilisé pour les tests d’applications Web et peut être utilisé pour toute tâche nécessitant d’automatiser l’interaction avec le navigateur.

installation

Selenium peut être installé via npm

npm install selenium-webdriver

Vous devrez télécharger des composants supplémentaires pour fonctionner avec chacun des principaux navigateurs. Les pilotes pour Chrome, Firefox et les navigateurs Web IE et Edge de Microsoft sont des exécutables autonomes qui doivent être placés sur votre système.
CHEMIN. Le Safaridriver d’Apple est livré avec Safari 10 pour OS X El Capitan et macOS Sierra. Vous devez activer l’automatisation à distance dans le menu Développement de Safari 10 avant le test.

utiliser

L’exemple suivant et d’autres sont dans le example Annuaire. Vous pouvez également trouver les tests de sélénium webdriver informatifs.

const {Builder, By, Key, until} = require('selenium-webdriver');

(async function example() {
  let driver = await new Builder().forBrowser('firefox').build();
  try {
    await driver.get('http://www.google.com/ncr');
    await driver.findElement(By.name('q')).sendKeys('webdriver', Key.RETURN);
    await driver.wait(until.titleIs('webdriver - Google Search'), 1000);
  } finally {
    await driver.quit();
  }
})();

Utilisez l’API Builder

le Builder class est votre point de contact central pour la configuration de nouvelles instances WebDriver. Au lieu d’encombrer votre code avec des branches pour les différents navigateurs, vous pouvez utiliser le générateur pour définir toutes les options en un seul flux. Quand vous appelez
Builder#build()toutes les options non pertinentes pour le navigateur sélectionné sont supprimées:

const webdriver = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const firefox = require('selenium-webdriver/firefox');

let driver = new webdriver.Builder()
    .forBrowser('firefox')
    .setChromeOptions(/* ... */)
    .setFirefoxOptions(/* ... */)
    .build();

Pourquoi devriez-vous configurer des options qui ne sont pas pertinentes pour le navigateur cible? le
BuilderL’API définit votre défaut Construction. Vous pouvez modifier le navigateur cible lors de l’exécution via SELENIUM_BROWSER Variable d’environnement. Par exemple le example/google_search.js Le script est configuré pour s’exécuter sur Firefox. Vous pouvez exécuter l’exemple sur d’autres navigateurs en modifiant simplement l’environnement d’exécution

# cd node_modules/selenium-webdriver
node example/google_search
SELENIUM_BROWSER=chrome node example/google_search
SELENIUM_BROWSER=safari node example/google_search

Le serveur Selenium autonome

Le serveur Selenium autonome agit comme un proxy entre votre script et les pilotes spécifiques au navigateur. Le serveur peut être utilisé lors de l’exécution locale. Cependant, cela n’est pas recommandé car cela introduit un saut supplémentaire pour chaque requête et ralentit la vitesse. Cependant, le serveur doit utiliser un navigateur sur un hôte distant (la plupart des pilotes de navigateur comme IEDriverServer n’acceptent pas les connexions à distance).

Pour pouvoir utiliser le serveur Selenium, vous devez installer le
JDK et téléchargez le dernier serveur depuis sélénium. Après le téléchargement, exécutez le serveur avec

java -jar selenium-server-standalone-2.45.0.jar

Vous pouvez configurer vos tests pour qu’ils s’exécutent sur un serveur distant à l’aide de l’API Builder:

let driver = new webdriver.Builder()
    .forBrowser('firefox')
    .usingServer('http://localhost:4444/wd/hub')
    .build();

Ou modifiez la configuration du générateur lors de l’exécution avec le SELENIUM_REMOTE_URL
Variable d’environnement:

SELENIUM_REMOTE_URL="http://localhost:4444/wd/hub" node script.js

Vous pouvez tester ces options en utilisant le example/google_search.js
Script avec selenium-webdriver.

Documentation

La documentation de l’API est disponible en ligne sur Projet Selenium. Inclure des ressources supplémentaires

Contribuer

Les contributions sont soit acceptées par GitHub Demandes ou correctifs concernant le glissement Suivi des problèmes de sélénium.

Politique de prise en charge des nœuds

Chaque version de Selenium Webdriver prend en charge la dernière version demi-mineur
Version du C’EST et les versions de nœuds stables. Tout Semver majeur &
demi-mineur Les versions entre le LTS et la version stable fourniront un support « best effort ». Après une libération de sélénium, tout le monde peut demi-mineur Les versions de nœud fourniront également une assistance «au mieux». Publications antérieures à la dernière LTS,
Semver majeur Les versions et toutes les branches de version instables (par exemple « v.Next ») ne sont strictement pas prises en charge.

Par exemple, supposons que les versions LTS et stables actuelles soient respectivement la version 6.9.5 et la version 7.5.0. Ensuite, une version Selenium aurait les niveaux de support suivants:

exécution Support
<= 6,8 non pris en charge
6,9 prise en charge
7.0-4 meilleur effort
7,5 prise en charge
> = 7,5 meilleur effort
v. suivant non pris en charge

Définitions du niveau de support

  • les soutiens: Une version de Selenium Webdriver est une API compatible avec l’API de la plateforme sans utiliser d’indicateurs d’exécution.

  • meilleur effort: Les erreurs sont examinées en fonction du temps requis. La compatibilité de l’API n’est garantie que sur demande d’un prise en charge Publication. Cela signifie effectivement que l’introduction de nouvelles fonctions JS, telles que B. Les modules ES2015 dépendent de ce qui est pris en charge dans le LTS de Node.

  • non pris en charge: Les soumissions de bogues seront fermées car elles ne seront pas corrigées et la compatibilité de l’API n’est pas garantie.

Calendrier de support projeté

Lorsque Node en publie un nouveau C’EST Chaque année en octobre et une nouvelle version majeure tous les 6 mois, la fenêtre de support de Selenium Webdriver ressemblera à ceci:

Date C’EST Stable
(Électricité) 8,9 9,0
2018-04 8.x. 10,0
2018-10 10.x. 11,0
2019-04 10.x. 12,0
2019-10 12.x. 13,0

Problèmes

Veuillez signaler tout problème avec le Suivi des problèmes de sélénium. Lors de l’utilisation du suivi des problèmes

  • Faire Fournissez une description détaillée du problème.
  • Faire Ajouter un lien vers un cœur avec des traces / logs de pile intéressants (vous pouvez également les attacher directement au rapport de bogue).
  • Faire inclure un cas de test réduit. Le message indique « Impossible de trouver l’élément sur la page » Pas Un rapport valide – nous n’avons rien à regarder. Attendez-vous à ce que votre rapport de bogue soit fermé si vous ne fournissez pas suffisamment d’informations pour que nous puissions enquêter.
  • Ne pas Utilisez l’outil de suivi des problèmes pour envoyer des demandes d’aide de base. Toutes les demandes d’aide doivent être adressées à Forum des utilisateurs ou canal IRC #selenium.
  • Ne pas poster vide « Je peux voir ça aussi » ou « Des mises à jour? » Remarques. Ceux-ci ne fournissent aucune information supplémentaire et surchargent le protocole.
  • Ne pas Signalez les régressions sur les bogues fermés car ils ne sont pas activement surveillés pour les mises à jour (en particulier les bogues datant de plus de 6 mois). Veuillez ouvrir une nouvelle édition et faire référence à l’erreur d’origine dans votre rapport.

Licence

Licence pour le logiciel Freedom Conservancy (SFC) sous un ou plusieurs accords de licence contributeur. Vous trouverez de plus amples informations sur le droit d’auteur dans le fichier AVIS distribué avec cette thèse. Le SFC vous accorde une licence pour ce fichier sous la licence Apache, version 2.0 (la «licence»). Vous ne pouvez utiliser ce fichier que conformément à la licence. Vous pouvez obtenir une copie de la licence à l’adresse

http://www.apache.org/licenses/LICENSE-2.0

Sauf si requis par la loi ou convenu par écrit, le logiciel distribué sous la licence est distribué « EN L’ÉTAT » sans aucune GARANTIE OU CONDITION, expresse ou implicite, D’AUCUNE SORTE. Dans la licence, vous pouvez trouver la langue spécifique pour les autorisations et les restrictions sous la licence.



Source link

Recent Posts