Comment éviter une erreur de nom de classe composée dans l'objet Page?
Lorsque j'essaie d'utiliser le nom de la classe que le fait d'avoir de l'espace class = "country name"
dans l'objet de page, j'obtiens:
Compound class names not permitted Selenium::WebDriver::Error::UnknownError)
Comment puis-je utiliser le nom de la classe que le fait d'avoir de l'espace.
Par exemple:
class = "country name"
source d'informationauteur KAK
Vous devez vous connecter pour publier un commentaire.
Utiliser un sélecteur CSS à la place:
La chose importante à noter est que cet exemple est faux! Si
"country name"
est un nom d'un pays, qui est. Les noms de classe ne peut pas être séparés par des espaces. En fait, laclass
attribut est un espace-liste de classes séparées. Cela signifie que si vous avez une classecountry name
ce n'est pas une classe, c'est deux différentes classes de votre élément appartient à la première estcountry
la deuxième estname
!Par conséquent, fixer vos classes, si ils se trompent. S'ils ne le font pas, l'utilisation d'un sélecteur CSS, c'est le seul moyen fiable pour correspondre à plusieurs classes (à l'exception d'un très long et très compliqué expression XPath). N'utilisez pas trivial expressions XPath ou sélecteurs CSS avec naïfs comparaison d'attributs (
//*[@class='country name']
ou*[class='country name']
), c'est tout simplement faux.Vous pouvez utiliser avec cette
Vous pouvez utiliser l'un de ces noms de classe, par exemple
ou
si il ne peut pas vous aider, alors vous devriez passer à l'utilisation d'un autre type de sélecteur :css ou :xpath
Mais notez que dans les cas suivants :css vous écrivez:
et en cas de :xpath:
les deux doivent travailler
Si vous avez des noms de classe qui ont des espaces à eux, vous obtiendrez cette erreur. Une façon d'éviter la création d'un xpath pour la définition de l'élément. Si vous montrez le html, je peux créer le xpath. Aussi essayer d'utiliser des noms de classe que plusieurs objets ont le même nom de classe.
Vous n'aurez qu'à enlever l'espace entre le nom de la classe, auquel cas le Sélénium doit encore en théorie trouver les éléments dont vous avez besoin ou utiliser un sélecteur CSS et de le combiner avec une période/arrêt complet pour concaténer les noms de classe ensemble.
je.e, à l'aide d'un sélecteur CSS pour cette cible:
Vous pouvez utiliser:
ou vous pourriez faire votre sélection un peu plus élaboré: