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"Love" <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" <1></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