[JAVA] Comment trouver May'n dans XPath

Récemment, quand j'ai essayé de trouver une chaîne de caractères contenant '(guillemet simple) dans l'environnement de Selenium + Junit, qui a été pris en charge par le pilote automatique et le test de pilote automatique sur la page Web, j'ai pris une note.

Si vous voulez rechercher une chaîne qui contient '(guillemet simple) lors de l'identification d'un élément avec Selenium etc., vous devez échapper' (guillemet simple), mais malheureusement la spécification de Xpath 1.0 Il n'y avait aucun moyen de s'échapper »(guillemets simples). À partir de XPath 2.0, par exemple, pour échapper '(guillemet simple) dans une chaîne de caractères entre' (guillemet simple), écrivez deux '(guillemets simples) dans une ligne et échappez comme' '. Cependant, il semble que XPath 2.0 ne puisse pas être utilisé même avec la dernière version de Firefox et Chrome.

Alors que s'est-il passé après tout? C'est devenu comme suit.

Par exemple, lors de la recherche d'un élément contenant la chaîne de caractères suivante par XPath,

python


<a aria-label="App mai'n-chan&quot;Love&quot; <1>" href="#MarketListingPlace:p=tmp.03831173739257532153.1317485953465" data-column="TITLE"><img src="gwt/placeholder_icon_24.png " role="presentation"><div> <div>May'n-chan"Love" &lt;1&gt;</div> <div></div> </div> </a>

Procédez comme suit (lors de la recherche avec la console de Firefox quantam)

$x("//a[@aria-label=concat('App mai', \"'\", 'n-chan\"Love\" <1>')]")

Avec Selenium + Junit, cela ressemble à ce qui suit

Recherche par By.xpath de Selenium + Junit

python


  searchString = "App mai'n-chan\"Love\" <1>";
  xPathStringLiteral = toXPathStringLiteral(searchString);
  searchXpath = "//a[@aria-label=" + xPathStringLiteral + "]";
  wait.until(ExpectedConditions.elementToBeClickable(By.xpath(searchXpath))

toXPathStringLiteral

python


  private String toXPathStringLiteral(String string) {
    if ( string.indexOf("'") == -1 ) {
        return "'" + string + "'";
    }
    if ( string.indexOf('"') == -1 ) {
        return '"' + string + '"';
    }
    return ("concat('" + string.replace("'", "', \"'\", '") + "')");
  }

C'était terriblement gênant ...

Recommended Posts

Comment trouver May'n dans XPath
Comment utiliser Lombok au printemps
Comment masquer la barre de défilement dans WebView
Comment exécuter JUnit dans Eclipse
Comment itérer indéfiniment en Ruby
Comment trouver l'angle moyen
Comment exécuter Ant dans Gradle
Comment maîtriser la programmation en 3 mois
Comment apprendre JAVA en 7 jours
Comment obtenir des paramètres dans Spark
Comment installer Bootstrap dans Ruby
Comment utiliser InjectorHolder dans OpenAM
Comment installer jQuery dans Rails 6
Comment utiliser les classes en Java?
Comment nommer des variables en Java
Comment définir Lombok dans Eclipse
Comment trouver les nombres premiers Java
Comment concaténer des chaînes avec Java
Comment installer Swiper in Rails
[swift5] Comment spécifier la couleur en hexadécimal
Comment implémenter la fonctionnalité de recherche dans Rails
Comment implémenter le calcul de la date en Java
Comment implémenter le filtre de Kalman par Java
Prise en charge multilingue de Java Comment utiliser les paramètres régionaux
Comment changer le nom de l'application dans les rails
Comment utiliser le volume nommé dans docker-compose.yml
Comment filtrer JUnit Test dans Gradle
Comment insérer une vidéo dans Rails
Comment normaliser le pied de page d'en-tête dans Thymeleaf
Comment inclure Spring Tool dans Eclipse 4.6.3?
Comment ajouter un fichier jar dans ScalaIDE
Comment faire une conversion de base en Java
Comment avoir des paramètres dans la méthode link_to
Comment utiliser Docker dans VSCode DevContainer
Comment utiliser MySQL dans le didacticiel Rails
Comment fixer la date système dans JUnit
Comment appliquer les conventions de codage en Java
Comment intégrer Janus Graph dans Java
[rails] Comment configurer le routage dans les ressources
Comment trouver les dizaines et les unités
Comment obtenir la date avec Java
Comment implémenter la fonctionnalité de classement dans Rails
Comment utiliser les variables d'environnement dans RubyOnRails
Comment implémenter le traitement asynchrone dans Outsystems
Comment publier une bibliothèque dans jCenter
Comment spécifier l'attribut id dans JSF
Comprendre en 5 minutes !! Comment utiliser Docker
Comment écraser les données Firebase avec Swift
Comment utiliser credentials.yml.enc introduit à partir de Rails 5.2
Comment assembler JSON directement dans Jackson
[Pour les débutants] Comment déboguer avec Eclipse
Comment utiliser ExpandableListView dans Android Studio
Comment afficher les messages d'erreur en japonais