Завести в петлю проверку title() и url() и проверять автоматически каждый раз при любом действии. Отстреливать exception если не совпало с ожидаемым. Использовать PageObject паттерн для страниц, внутри page object-а определять жёстко поле Url = “” (к примеру) и Title = “”. Автоматически тягать во время прогона теста и сверять текущий с ожидаемым на странице (и соответственно в объекте)
Я сделала так, хорошо работает
js.ExecuteScript(“window.MyWindow = “hello””);
string textOld = (string)js.ExecuteScript(“return window.MyWindow”);
mainPage.Header.ClickHomeButton();
string textNew = (string)js.ExecuteScript(“return window.MyWindow”);
textNew.ShouldBeEquivalentTo(textOld);
а потом проверяем, если страница перезагрузилась сама
$have_var = $this->getSession()->evaluateScript("return (typeof behat_same_page !== 'undefined');");
if ($have_var) {
return;
}
throw new Exception('Page has been changed');
С behat вообще не знакома… еще вопрос, какую конректно сессию мы пытаемся получить? куку из local storage? и изменить ее значение скриптом? или создать рядом новую дополнительную для проверки? в общем плз поподробней…
Доброго времени суток.
Не обращайте внимания на тестовый фрейм
Идея в том чтоб на текущей странице создать переменную js и после проверить есть ли до сих пор эта переменная.
Не знаю Вашего синтаксиса, постарайтесь уловить идею
Открыть страницу - создать переменную js
js.ExecuteScript(“same_page = 1”);
Выполняем любые действия на странице
Проверяем существует ли переменная на текущей странице (если страница была перезагруженна или новая - переменная не будет существовасть. Если страница не перезагружалась (аякс сработал коректно) - переменная будет доступная)
if (js.ExecuteScript(“return same_page”) != 1) {
// Exception
}