Как я использую регулярные выражения в своих автотестах

Встала передо мной как то задача, в автотестах сделать отображение на определенной странице определеных цифр
А именно на сайте есть примерно 15-20 лаеров, где мне необхоимдо проверить присутствие в одном поле цифр 5554 или 5111 или 1055 цифры всегда разные, а в другом  99+5454878787 или 93+48976564564  или 91+65656598 и т д

В итоге на каждый странице каждый текст с цифрами я решил проверять через регулярное выражение.

Через http://gskinner.com/RegExr/
Под первую строчку делаем регулярку 99\+\d{5,}
Под вторую \d{4}

Тест в java при помощи WebDriver я проверяю как

assertTrue(findElement(By.tagName(«body»)).getText().contains(«текст»));

(Если вы проверяйте как-то по-другому, то напишите, очень интересно)

В Java при проверке каждого лаера я попытался сделать проверку через регулярные выражения следующее:
assertTrue(findElement(By.tagName(«body»)).getText().

contains(«93\\+\\d{5,}»)); //+экранируем
assertTrue(findElement(By.tagName(«body»)).getText().

contains(«\\d{4}»));

Но автотест падал на этих же строчках, тогда добрые люди мне подсказали, что

Сontains это не для проверки на соответствие регулярному выражению, это просто проверка подстроки и для регулярных выражений нет матчера стандартного и посоветовали используать вот эту дополнительную библиотеку: https://code.google.com/p/hamcrest-text-patterns/

(Кстати я ее так и не использовал, кто использовал, дайте знать)

Я сделал так:

String text = findElement(By.cssSelector(«var.sms-text»)).getText();
Pattern p = Pattern.compile(«93\\+\\d{5,}»);
Matcher m = p.matcher(text);
if (m.matches()) {
System.out.println(text);
};

String text1 = findElement(By.cssSelector(«div.fl-r div.numberHint+span»)).getText();
Pattern p1 = Pattern.compile(«\\d{4}»);
Matcher m1 = p1.matcher(text1);
if (m1.matches()) {
System.out.println(text1);
};

Хотя, если бы не было полей, откуда я бы мог gettext()-ом вытащить нужные мне значения, то тогда пришлось бы заморочиться.

Понравилась статья? Поделиться с друзьями:
Комментарии: 2
  1. qq

    String text1 = findElement(By.cssSelector(«div.fl-r div.numberHint+span»)).getText();
    Pattern p1 = Pattern.compile(«\\d{4}»);
    Matcher m1 = p1.matcher(text1);
    if (m.matches()) {

    тут видимо опечатка
    if (m1.matches()) { // должно быть так)

    1. Олег

      Да. Исправил)

Добавить комментарий для Олег Отменить ответ

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.