XPath: utilisation de regex dans la fonction contains
j'aimerais correspondre le texte suivant sometext12345_text
en utilisant le regex ci-dessous.
J'utilise ça dans un de mes tests sur le sélénium.
String expr = "//*[contains(@id, 'sometext[0-9]+_text')]";
driver.findElement(By.xpath(expr));
Il ne semble pas fonctionner. Quelqu'un peut-il aider?
36
demandé sur
ragesh
2014-01-28 16:07:11
2 réponses
XPath 1.0 ne gère pas les regex en mode natif, vous pouvez essayer quelque chose comme
//*[starts-with(@id, 'sometext') and ends-with(@id, '_text')]
(comme le souligne paul t,//*[boolean(number(substring-before(substring-after(@id, "sometext"), "_text")))]
peut être utilisé pour effectuer la même vérification que votre regex original fait, si vous avez besoin de vérifier les chiffres du milieu aussi bien)
dans XPath 2.0, essayez
//*[matches(@id, 'sometext\d+_text')]
42
répondu
Robin
2014-01-28 13:54:20
si vous utilisez du sélénium avec Firefox vous devriez pouvoir utiliser extensions EXSLT et regexp: test ()
Est-ce que cela fonctionne pour vous?
String expr = "//*[regexp:test(@id, 'sometext[0-9]+_text')]";
driver.findElement(By.xpath(expr));
4
répondu
paul trmbrth
2014-01-28 12:16:54