Aller au contenu principal

Sélecteurs

Le Protocole WebDriver fournit plusieurs stratĂ©gies de sĂ©lection pour interroger un Ă©lĂ©ment. WebdriverIO les simplifie pour faciliter la sĂ©lection des Ă©lĂ©ments. Veuillez noter que mĂȘme si la commande pour interroger les Ă©lĂ©ments s'appelle $ et $$, elles n'ont rien Ă  voir avec jQuery ou le Moteur de SĂ©lection Sizzle.

Bien qu'il existe de nombreux sélecteurs différents, seuls quelques-uns d'entre eux offrent un moyen fiable de trouver le bon élément. Par exemple, étant donné le bouton suivant :

<button
id="main"
class="btn btn-large"
name="submission"
role="button"
data-testid="submit"
>
Submit
</button>

Nous recommandons et ne recommandons pas les sélecteurs suivants :

SélecteurRecommandéNotes
$('button')🚹 JamaisLe pire - trop gĂ©nĂ©rique, sans contexte.
$('.btn.btn-large')🚹 JamaisMauvais. CouplĂ© au style. TrĂšs susceptible de changer.
$('#main')⚠ Avec parcimonieMieux. Mais toujours couplĂ© au style ou aux Ă©couteurs d'Ă©vĂ©nements JS.
$(() => document.queryElement('button'))⚠ Avec parcimonieRequĂȘte efficace, complexe Ă  Ă©crire.
$('button[name="submission"]')⚠ Avec parcimonieCouplĂ© Ă  l'attribut name qui a une sĂ©mantique HTML.
$('button[data-testid="submit"]')✅ BonNĂ©cessite un attribut supplĂ©mentaire, non liĂ© Ă  l'a11y.
$('aria/Submit') ou $('button=Submit')✅ ToujoursLe meilleur. Ressemble Ă  la façon dont l'utilisateur interagit avec la page. Il est recommandĂ© d'utiliser les fichiers de traduction de votre frontend pour que vos tests ne Ă©chouent jamais lorsque les traductions sont mises Ă  jour

SĂ©lecteur CSS​

Sauf indication contraire, WebdriverIO interrogera les éléments en utilisant le modÚle de sélecteur CSS, par exemple :

selectors/example.js
loading...

Texte de lien​

Pour obtenir un élément d'ancrage avec un texte spécifique, interrogez le texte en commençant par un signe égal (=).

Par exemple :

selectors/example.html
loading...

Vous pouvez interroger cet élément en appelant :

selectors/example.js
loading...

Texte de lien partiel​

Pour trouver un Ă©lĂ©ment d'ancrage dont le texte visible correspond partiellement Ă  votre valeur de recherche, interrogez-le en utilisant *= devant la chaĂźne de requĂȘte (par exemple, *=driver).

Vous pouvez également interroger l'élément de l'exemple ci-dessus en appelant :

selectors/example.js
loading...

Remarque : Vous ne pouvez pas mĂ©langer plusieurs stratĂ©gies de sĂ©lection dans un seul sĂ©lecteur. Utilisez plutĂŽt plusieurs requĂȘtes d'Ă©lĂ©ments chaĂźnĂ©es pour atteindre le mĂȘme objectif, par exemple :

const elem = await $('header h1*=Welcome') // ne fonctionne pas !!!
// utilisez plutĂŽt
const elem = await $('header').$('*=driver')

ÉlĂ©ment avec un texte spĂ©cifique​

La mĂȘme technique peut ĂȘtre appliquĂ©e aux Ă©lĂ©ments Ă©galement. De plus, il est Ă©galement possible de faire une correspondance insensible Ă  la casse en utilisant .= ou .*= dans la requĂȘte.

Par exemple, voici une requĂȘte pour un titre de niveau 1 avec le texte "Welcome to my Page" :

selectors/example.html
loading...

Vous pouvez interroger cet élément en appelant :

selectors/example.js
loading...

Ou en utilisant une requĂȘte de texte partiel :

selectors/example.js
loading...

La mĂȘme chose fonctionne pour les noms d'id et de class :

selectors/example.html
loading...

Vous pouvez interroger cet élément en appelant :

selectors/example.js
loading...

Remarque : Vous ne pouvez pas mĂ©langer plusieurs stratĂ©gies de sĂ©lection dans un seul sĂ©lecteur. Utilisez plutĂŽt plusieurs requĂȘtes d'Ă©lĂ©ments chaĂźnĂ©es pour atteindre le mĂȘme objectif, par exemple :

const elem = await $('header h1*=Welcome') // ne fonctionne pas !!!
// utilisez plutĂŽt
const elem = await $('header').$('h1*=Welcome')

Nom de balise​

Pour interroger un élément avec un nom de balise spécifique, utilisez <tag> ou <tag />.

selectors/example.html
loading...

Vous pouvez interroger cet élément en appelant :

selectors/example.js
loading...

Attribut Name​

Pour interroger des éléments avec un attribut name spécifique, vous pouvez soit utiliser un sélecteur CSS3 normal, soit la stratégie de nom fournie par le JSONWireProtocol en passant quelque chose comme [name="some-name"] comme paramÚtre de sélecteur :

selectors/example.html
loading...
selectors/example.js
loading...

Remarque : Cette stratégie de sélection est obsolÚte et ne fonctionne que dans les anciens navigateurs qui sont exécutés par le protocole JSONWireProtocol ou en utilisant Appium.

xPath​

Il est également possible d'interroger des éléments via un xPath spécifique.

Un sélecteur xPath a un format comme //body/div[6]/div[1]/span[1].

selectors/xpath.html
loading...

Vous pouvez interroger le deuxiĂšme paragraphe en appelant :

selectors/example.js
loading...

Vous pouvez utiliser xPath pour également parcourir l'arbre DOM vers le haut et vers le bas :

selectors/example.js
loading...

SĂ©lecteur de nom d'accessibilité​

Interrogez les Ă©lĂ©ments par leur nom accessible. Le nom accessible est ce qui est annoncĂ© par un lecteur d'Ă©cran lorsque cet Ă©lĂ©ment reçoit le focus. La valeur du nom accessible peut ĂȘtre Ă  la fois du contenu visuel ou des alternatives textuelles cachĂ©es.

info

Vous pouvez en savoir plus sur ce sélecteur dans notre article de blog de lancement

RĂ©cupĂ©rer par aria-label​

selectors/aria.html
loading...
selectors/example.js
loading...

RĂ©cupĂ©rer par aria-labelledby​

selectors/aria.html
loading...
selectors/example.js
loading...

RĂ©cupĂ©rer par contenu​

selectors/aria.html
loading...
selectors/example.js
loading...

RĂ©cupĂ©rer par titre​

selectors/aria.html
loading...
selectors/example.js
loading...

RĂ©cupĂ©rer par propriĂ©tĂ© alt​

selectors/aria.html
loading...
selectors/example.js
loading...

ARIA - Attribut Role​

Pour interroger des éléments basés sur les rÎles ARIA, vous pouvez spécifier directement le rÎle de l'élément comme [role=button] en tant que paramÚtre de sélecteur :

selectors/aria.html
loading...
selectors/example.js
loading...

Attribut ID​

La stratégie de localisation "id" n'est pas prise en charge dans le protocole WebDriver, il faut utiliser les stratégies de sélecteur CSS ou xPath pour trouver des éléments en utilisant l'ID.

Cependant, certains pilotes (par exemple Appium You.i Engine Driver) pourraient encore prendre en charge ce sélecteur.

Les syntaxes de sélecteur actuellement prises en charge pour l'ID sont :

//localisateur css
const button = await $('#someid')
//localisateur xpath
const button = await $('//*[@id="someid"]')
//stratégie id
// Remarque : fonctionne uniquement dans Appium ou des frameworks similaires qui prennent en charge la stratégie de localisation "ID"
const button = await $('id=resource-id/iosname')

Fonction JS​

Vous pouvez également utiliser des fonctions JavaScript pour récupérer des éléments en utilisant les API web natives. Bien sûr, vous ne pouvez le faire que dans un contexte web (par exemple, browser, ou contexte web sur mobile).

Étant donnĂ© la structure HTML suivante :

selectors/js.html
loading...

Vous pouvez interroger l'élément frÚre de #elem comme suit :

Welcome! How can I help?

WebdriverIO AI Copilot