Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Не находит последующий скрин во время прохождения тест кейсов


(s.alex) #1

Доброе утро коллеги! У меня возникла проблема при нахождении скрина (can not find …)
Вот у меня есть 2 патерна

private Pattern logo; // это логотип при запуске

private Pattern window;

вот объекты

logo = new Pattern (DataProperties.path("logo.jpg"));
window = new Pattern (DataProperties.path("window.jpg"));

также риджины

private Region logoWindow; // это для logo
private Region windowEnter; // это для window

logoWindow = getDriver().wait(logo);
windowEnter = getDriver().wait(window);

После я в методе описываю прохождение

public TestScreen enterTestAuth() throws FindFailed, InterruptedException {
logoWindow.wait(logo);
Thread.sleep(10000);
windowEnter.wait(window);
return this;
}

Ну и сам тест

@Test
public void testEnter() throws Exception {
TestScreen login = new TestScreen();
login.enterTestAuth();
Thread.sleep(3000);
}

Результат должен показать следующее

  1. Запускается логотип,
  2. Через 10 сек открывается окно

Вот у меня проблема что тест падает, что не находит второй скрин с главным окном

   FindFailed: can not find P(C:/Users/Alex/.jenkins/jobs/TCCTest/target/classes/loginWindow.jpg) S:     0.7 in M[486,252 392x259]@S(0)
   Line 2174, in file Region.java

Пожалуйста подскажите в чем может быть проблема, т.к. в папке target/classes есть эти скрины


(Sergey Korol) #2

Весьма странная конструкция. Подождать лого, затем подождать 10 сек не понятно чего, ну и в конце начать ждать еще 1 скрин. Вам не приходило в голову, что основное окно может прогружаться, к примеру 10.1 сек? И что, будете каждый раз корректировать ваш слип? А если меньше 10? Будете все равно ждать 10?

Реализацию wait в студию. А вообще, если вы используете SikuliX, странно, что вы до сих пор не обнаружили механизм observer в официальной документации. Даже в БЗ есть примеры его использования.


(s.alex) #3

Я всего пара дней как начал использовать, мне сейчас следует разобраться почему по отдельности скрины работают, а в паре нет


(s.alex) #4

ArtOfLife - разобрался спасибо, за понимание


(Александр Таранков) #5

Напиши хоть в чём была проблема. Может кому ещё пригодится.
Тебе бы понравилось, если бы в ответ на твой вопрос на форуме писали: “О, я знаю ответ на твой вопрос, можешь закрывать тему”? (риторический вопрос :))


(s.alex) #6

Дело в том, что я не обратил внимание на правильный порядо Region,

Следовательно после каждого region , идут тест кейсы, а не сам region

        public AuthAfterSip enterAuth() throws FindFailed, InterruptedException {

	Thread.sleep(9000);
	windowEnter = getDriver().wait(enter); // первый риджен, после идут кейсы
	windowEnter.click(enter);
	loginWindow = getDriver().wait(form); // второй риджен
	loginWindow.wait(form);
	loginWindow.type(pass, "12");
	loginWindow.click(ok);
	Thread.sleep(2000);
	return this;
}

Если поставить

    windowEnter = getDriver().wait(enter);
    loginWindow = getDriver().wait(form); 

то естественно будет (can not find…). так как он будет искать риджен, а не поле какое-то