[JAVA] So finden Sie May'n in XPath

Als ich kürzlich versuchte, in der Umgebung von Selenium + Junit eine Zeichenfolge mit '(einfaches Anführungszeichen) zu finden, die von Autopilot und Autopilotentest auf der Webseite behoben wurde, machte ich mir eine Notiz.

Wenn Sie nach einer Zeichenfolge suchen möchten, die "(einfaches Anführungszeichen) enthält, wenn Sie ein Element mit Selen usw. identifizieren, müssen Sie entkommen" (einfaches Anführungszeichen), aber leider die Spezifikation von Xpath 1.0 Es gab keinen Ausweg “(einfache Anführungszeichen). Um beispielsweise in XPath 2.0 '(einfaches Anführungszeichen) in einer in' (einfaches Anführungszeichen) eingeschlossenen Zeichenfolge zu maskieren, schreiben Sie zwei '(einfaches Anführungszeichen) in eine Reihe und maskieren Sie wie' '. Es scheint jedoch, dass XPath 2.0 selbst mit der neuesten Version von Firefox und Chrome nicht verwendet werden kann.

Also, was ist denn passiert? Es wurde wie folgt.

Wenn Sie beispielsweise nach einem Element suchen, das die folgende Zeichenfolge von XPath enthält,

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>

Gehen Sie wie folgt vor (wenn Sie mit der Konsole von Firefox quantam suchen)

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

Mit Selenium + Junit sieht es wie folgt aus

Suche nach By.xpath von Selen + 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("'", "', \"'\", '") + "')");
  }

Es war furchtbar mühsam ...

Recommended Posts

So finden Sie May'n in XPath
Wie man Lombok im Frühling benutzt
So blenden Sie die Bildlaufleiste in WebView aus
So führen Sie JUnit in Eclipse aus
Wie man in Ruby auf unbestimmte Zeit iteriert
So finden Sie den durchschnittlichen Winkel
Wie man Ant in Gradle ausführt
Wie man die Programmierung in 3 Monaten beherrscht
Wie man JAVA in 7 Tagen lernt
So erhalten Sie Parameter in Spark
So installieren Sie Bootstrap in Ruby
Verwendung von InjectorHolder in OpenAM
So installieren Sie jQuery in Rails 6
Wie verwende ich Klassen in Java?
So benennen Sie Variablen in Java
So setzen Sie Lombok in Eclipse
So finden Sie Java-Primzahlen
So verketten Sie Zeichenfolgen mit Java
So installieren Sie Swiper in Rails
[swift5] So legen Sie die Farbe hexadezimal fest
So implementieren Sie Suchfunktionen in Rails
So implementieren Sie die Datumsberechnung in Java
So implementieren Sie den Kalman-Filter mit Java
Mehrsprachige Unterstützung für Java Verwendung des Gebietsschemas
So ändern Sie den App-Namen in Rails
Verwendung des benannten Volumes in docker-compose.yml
So filtern Sie den JUnit-Test in Gradle
So fügen Sie ein Video in Rails ein
So standardisieren Sie die Kopfzeile in Thymeleaf
Wie kann ich Spring Tool in Eclipse 4.6.3 einbinden?
So fügen Sie eine JAR-Datei in ScalaIDE hinzu
So führen Sie eine Basiskonvertierung in Java durch
Wie man Parameter in der link_to-Methode hat
Verwendung von Docker in VSCode DevContainer
Verwendung von MySQL im Rails-Tutorial
So beheben Sie das Systemdatum in JUnit
So erzwingen Sie Codierungskonventionen in Java
Einbetten von Janus Graph in Java
[Rails] So konfigurieren Sie das Routing in Ressourcen
Wie man die Zehner und Einsen findet
So erhalten Sie das Datum mit Java
So implementieren Sie Ranking-Funktionen in Rails
Verwendung von Umgebungsvariablen in RubyOnRails
So implementieren Sie die asynchrone Verarbeitung in Outsystems
So veröffentlichen Sie eine Bibliothek in jCenter
So geben Sie das ID-Attribut in JSF an
Verstehe in 5 Minuten !! Wie man Docker benutzt
So überschreiben Sie Firebase-Daten mit Swift
Verwendung von credentials.yml.enc aus Rails 5.2
So montieren Sie JSON direkt in Jackson
[Für Anfänger] So debuggen Sie mit Eclipse
Verwendung von ExpandableListView in Android Studio
So zeigen Sie Fehlermeldungen auf Japanisch an