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

问题描述 投票:0回答:3
/**
 * @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();
}

这两个功能对我来说不起作用。有什么解决方法吗 等待重定向页面加载?

php selenium-webdriver codeception webautomation
3个回答
0
投票

在调用这些方法之前,

/**
 * @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);
切换到下一个选项卡。 移至下一个选项卡后,您可以等待新页面加载。


0
投票

我找到的最稳定的解决方案:

    $I->waitForJS('return document.oldPage = "yes"');
    $I->submitForm('form', ['field1' => 'xyz']);
    $I->waitForJS('return document.oldPage !== "yes"');

因为当我触发submitForm时,它不会等待页面加载,并且页面在开始加载之前仍会在短时间内保持活动状态,一旦开始加载,JS就会停止评估并在加载后启动.


-2
投票

你想做什么?这些功能看起来过于复杂。您是否正在尝试检查错误或检查预期的页面?我会尝试做其中之一。你知道下一页的预期结果吗?你能这样做吗:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.