Dans le documentation officielle du webdirver W3c , il est clairement indiqué que les stratégies de localisation sont:
State Keyword
CSS selector "css selector"
Link text selector "link text"
Partial link text selector "partial link text"
Tag name "tag name"
XPath selector "xpath"
Cependant, protocole de fil de Selenium autorisé:
class name
css selector
id
name
link text
partial link text
tag name
xpath
Dans THEORY, les documents de Selenium sont obsolètes et la "vraie" histoire est dans le nouveau document de spécification. Toutefois...
J'ai effectué des tests sur le dernier Webdriver de Chrome et je peux confirmer que name
et class name
les deux fonctionnent; cependant, ils ne figurent pas dans les spécifications.
Je me souviens avoir lu sur un problème Chromium qu'ils ne mettraient en œuvre que les spécifications officielles du Webdriver.
Maintenant: je connais la réponse générique, où "les spécifications ne sont pas toujours suivies à 100%" etc. Cependant, ce que j'aimerais savoir c'est:
Oui, vous l'avez bien vu.
Selon le courant WebDriver - W3C Candidate Recommendation
le (Locator Strategies
enrôlés sont les suivants:
"css selector"
: sélecteur CSS"link text"
: Sélecteur de texte de lien"partial link text"
: Sélecteur de texte de lien partiel"tag name"
: nom de la balise"xpath"
: sélecteur XPathInstantané:
Cependant, le JsonWireProtocol
a déjà été utilisé pour prendre en charge le localisateur Stratégies répertoriées ci-dessous mais actuellement la documentation indique clairement que c'est Status as [~ # ~] obsolète [~ # ~] :
class name
: renvoie un élément dont le nom de classe contient la valeur de recherche; les noms de classe composés ne sont pas autorisés.css selector
: renvoie un élément correspondant à un sélecteur CSS.id
: renvoie un élément dont l'attribut ID correspond à la valeur de recherche.name
: renvoie un élément dont l'attribut NAME correspond à la valeur de recherche.link text
: renvoie un élément d'ancrage dont le texte visible correspond à la valeur de recherche.partial link text
: renvoie un élément d'ancrage dont le texte visible correspond partiellement à la valeur de recherche.tag name
: renvoie un élément dont le nom de balise correspond à la valeur de recherche.xpath
: renvoie un élément correspondant à une expression XPath. L'expression XPath fournie doit être appliquée au serveur "en l'état"; si l'expression n'est pas relative à la racine de l'élément, le serveur ne doit pas la modifier. Par conséquent, une requête XPath peut renvoyer des éléments non contenus dans la sous-arborescence de l'élément racine.Instantané:
Le changement a été propagé via les liaisons spécifiques respectives du client . Pour le Selenium-Java
clients voici le code client où le boîtier de commutation fonctionne pour les utilisateurs:
switch (using) {
case "class name":
toReturn.put("using", "css selector");
toReturn.put("value", "." + cssEscape(value));
break;
case "id":
toReturn.put("using", "css selector");
toReturn.put("value", "#" + cssEscape(value));
break;
case "link text":
// Do nothing
break;
case "name":
toReturn.put("using", "css selector");
toReturn.put("value", "*[name='" + value + "']");
break;
case "partial link text":
// Do nothing
break;
case "tag name":
toReturn.put("using", "css selector");
toReturn.put("value", cssEscape(value));
break;
case "xpath":
// Do nothing
break;
}
return toReturn;
Instantané:
Maintenant, votre question doit être pourquoi ce changement dans le W3C Specs
et dans clients
. Selon # 1042 la réponse des contributeurs WebDriver était assez simple:
This keeps the specification simple as these can be implemented using the CSS selector, which maps down to querySelector/querySelectorAll.