Size: a a a

Selenide на русском

2020 November 13

AO

Andrew Orlov in Selenide на русском
я использую матчеры обычно
источник

AO

Andrew Orlov in Selenide на русском
в противном случае сам их пишу
источник

AS

Andrei Solntsev in Selenide на русском
В смысле херня не код, а булеаны в тестах.
источник

Y

Yuriy in Selenide на русском
Andrew Orlov
я использую матчеры обычно
это как ? есть пример ?
источник

AS

Andrei Solntsev in Selenide на русском
На самом деле Condition и есть по сути матчер. Но сути это не меняет.
Важно вот что:
1. $.shouldHave(cssClass(“your class”)) - хорошо
2. $.shouldNotHave(cssClass(“your class”)) - хорошо
3. assertEquals(...) - хорошо
4. assertThat(…).isEqualTo(...) - хорошо
5. if ($.has(cssClass(“…”))) - ПЛОХО
источник

AV

Alexei Vinogradov in Selenide на русском
Yuriy
день добрый  - есть такой элемент - у него есть класс
class="dx-overlay dx-widget dx-visibility-change-handler dx-loadpanel dx-state-invisible"
как сделать проверку на то чтобы в классе элемента присутсвовала или отсутствовала часть  " dx-state-invisible" ?
Это не "класс", это много классов.
источник

Y

Yuriy in Selenide на русском
я понимаю. несколько классов. из которых мне надо проконтролировать только один
источник

AV

Alexei Vinogradov in Selenide на русском
Yuriy
Ага спасибо. правда я имел в виду что-то типа boolean Bvisible = se.....
А зачем вам булеан?
источник

Y

Yuriy in Selenide на русском
Ну я так припоминаю что .shouldHave имеют функцию wait ?
тогда не нужны були.
источник

AO

Andrew Orlov in Selenide на русском
Yuriy
это как ? есть пример ?
public static <T> void assertThat(String reason, T actual, Matcher<? super T> matcher) {
       boolean matched = matcher.matches(actual);
       Description description = new StringDescription();
       description.appendText(reason)
               .appendText("\nExpected: ")
               .appendDescriptionOf(matcher)
               .appendText("\n     but: ");
       matcher.describeMismatch(actual, description);

       Consumer consumer = e -> {
           if (!matched){
               getSyncConsumer().accept(null);
               if(!matcher.matches(actual))
                   throw new AssertionError(description.toString());
           }
       };
       String message = String.format("Ожидаем, что: %s%s",("".equals(reason)? "": reason + " "), matcher.toString());
       step().message(consumer, message);
       //step(message, getStepper(consumer));
       log.debug("match -> " + matcher.toString());
   }
источник

Y

Yuriy in Selenide на русском
я пока сделать  se.shouldNotBe(visible) и все пока рабоатет
источник

AO

Andrew Orlov in Selenide на русском
типа такого
источник

AO

Andrew Orlov in Selenide на русском
всё это автоматом аттачится сразу в Allure
источник

AO

Andrew Orlov in Selenide на русском
в качестве параметра я кидаю какой-нить матчер самописный или существующий
источник

AO

Andrew Orlov in Selenide на русском
public class IsPositiveInteger extends TypeSafeMatcher<Integer> {
   @Override
   protected boolean matchesSafely(Integer item) {
       return item > 0;
   }

   @Factory
   public static Matcher<Integer> isAPositiveInteger() {
       return new IsPositiveInteger();
   }

   @Override
   public void describeTo(Description description) {
       description.appendText("a positive integer");

   }
}
источник

AO

Andrew Orlov in Selenide на русском
вот простецкий матчер
источник

AV

Alexei Vinogradov in Selenide на русском
Какой кошмар, зачем всё это)
источник

AO

Andrew Orlov in Selenide на русском
я свой инструмент делал просто
источник

AO

Andrew Orlov in Selenide на русском
мне не всегда нравится дефолтное поведение матчеров из коробки
источник

AO

Andrew Orlov in Selenide на русском
учитывая то, что у меня есть мания каждый пук писать в аллюр
источник