如何在codeception中点击另一个网页的按钮后等到网页被重定向?

How to wait until a web page is redirected after clicking a button of another web page in codeception?

/**
 * @param int $timeout : timeout period
 * @throws ModuleException
 */
public function waitAjaxLoad($timeout = 10)
{
    $this->webDriverModule->waitForJS('return !!window.jQuery && window.jQuery.active == 0;', $timeout);
    $this->webDriverModule->wait(1);
    $this->dontSeeJsError();
}

/**
 * @param int $timeout : timeout period
 * @throws ModuleException
 */
public function waitPageLoad($timeout = 10)
{
    $this->webDriverModule->waitForJs('return document.readyState == "complete"', $timeout);
    $this->waitAjaxLoad($timeout);
    $this->dontSeeJsError();
}

These two functions did not work for me. Are there any workaround to wait until the redirected page is loaded?

你想做什么?这些功能似乎过于复杂。您是要检查错误还是检查预期的页面?我会尝试做一个或另一个。你知道下一页的预期结果吗?你可以这样做吗:

sleep(10);
$I->see('something on the expected page');

无论如何,我查看了您的代码,但在 10 秒内我无法弄清楚它要做什么。这对我来说意味着你需要重构什么的。

在调用这些方法之前,

/**
 * @param int $timeout : timeout period
 * @throws ModuleException
 */
public function waitAjaxLoad($timeout = 10)
{
    $this->webDriverModule->waitForJS('return !!window.jQuery && window.jQuery.active == 0;', $timeout);
    $this->webDriverModule->wait(1);
    $this->dontSeeJsError();
}

/**
 * @param int $timeout : timeout period
 * @throws ModuleException
 */
public function waitPageLoad($timeout = 10)
{
    $this->webDriverModule->waitForJs('return document.readyState == "complete"', $timeout);
    $this->waitAjaxLoad($timeout);
    $this->dontSeeJsError();
}

我必须调用 $this->switchToNextTab(1); 才能移动到浏览器中的下一个选项卡。

一旦您的测试用例单击提交按钮并路由到具有新浏览器选项卡的不同页面,那么您必须通过调用 $this->switchToNextTab(1); 切换到 NextTab。 移动到next-tab后就可以等待新页面加载了。