Как справиться с тайм-аутом сеанса с селеном - PullRequest
0 голосов
/ 27 марта 2019

Я посмотрел некоторые ответы на аналогичный вопрос, но не смог найти удовлетворенного ответа.

Я создаю фреймворк для автоматизации, в котором я выполняю 200 тестовых случаев, и на это уходит около 60 минут.

Приложение имеет время сеанса из 30 минут, поэтому во время выполнения моих тестовых примеров оно выходит из системы через 30 минут, а затем тестовые случаи терпят неудачу, поскольку не могут найти требуемые элементы.

Какой логин я думаю для обработки тайм-аута сессии:

  1. Вызовите метод входа еще раз в контрольном примере № X и проверьте, если выход из системы, а затем снова войдите в систему. Но это, кажется, не очень хорошая идея, как будто время ожидания завтрашней сессии обновилось с 30 минут до чего-то еще, мне придется вызвать метод входа в какой-то другой контрольный пример.

2.Если Current time - Test start time >= 30 minute s, проверьте, если система вышла из системы, и если да, то войдите снова. но этот вопрос такой же, как я должен вызывать его либо в каждом методе, либо в некоторых конкретных методах, чтобы каждый раз проверять выход из системы или нет.

Так что я ищу какое-то решение, где оно постоянно проверяет с самого начала моей автоматизации, что если окно выхода из системы найдено, то вызовите метод входа в систему.

Примечание: Я использую селеновый веб-драйвер, Java, TestNG, Maven и шаблон объекта следующей страницы.

1 Ответ

1 голос
/ 27 марта 2019

Итак, я предполагаю, что ваша страница входа имеет другой URL, чем любая из ваших страниц в реальном приложении. Если у вас еще нет метода с testng @BeforeTest, вы можете создать его и включить в свой новый или существующий метод предварительного тестирования следующее:

if (driver.getCurrentUrl() == “whatever.yourLoginPageUrl.is”) {
    //call login method or do whatever you have to do to login

    //If you want to rerun the previous test that probably failed, do that here
}

Немного более приятный способ (я думаю) сделать это - реализовать интерфейс IRetryAnalyzer и переопределить функцию повтора, например, вот так

public class MyRetry implements IRetryAnalyzer {

@Override
public boolean retry(ITestResult result) {
    if (driver.getCurrentUrl() == “loginPageUrl”) {
        //call login function or do whatever you need to to login 
        return true;
    }
    return false;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...