处理JavaScript警报

时间:2019-07-01 10:04:02

标签: javascript php symfony-panther

从2天开始,我就开始玩豹游戏了,这是很棒的工具,但是我在场景方面有一些问题。

我想从我的应用程序中删除文章。 该过程如下: 我按下一个按钮,将显示一个警报以确认。

问题是WebDriver抛出UnexpectedAlertOpenException 好的,所以我将其添加到客户端$client->getWebDriver()->switchTo()->alert()->accept();

但是现在我得到了NoAlertOpenException:此行后立即没有警报打开。

我很尴尬

这是我的测试:

public function testDeleteAnArticle()
    {
        $client = static::createPantherClient();

        $crawler = $client->request('GET', '/');

        $crawler = $this->loginAs($client, $crawler, 'admin', 'azerty');

        $crawler = $client->click($crawler->selectLink('Dashboard')->link());
        $crawler = $client->click($crawler->selectLink('ARTICLES')->link());

        $client->getWebDriver()->switchTo()->alert()->accept(); //<-- it will throw a NoAlertOpenException

        $crawler = $client->click($crawler->filter('a.is-danger')->eq(5)->link());

        $client->waitFor('.notification');

        $this->assertContains('The article has been successfully deleted', $crawler->filter('.notification')->text());
    }

有人知道如何处理吗? 谢谢

1 个答案:

答案 0 :(得分:0)

如果抛出 NoAlertOpenException 异常,则不会打开任何警报,因此黑豹无法关闭警报。

您可以在环境变量 PANTHER_NO_HEADLESS 设置为1的情况下无头运行测试。然后您可以查看实际情况。也许您的测试只是点击了错误的链接。

请注意,接受警报后,您需要重新实例化$ crawler。您可以通过以下方式重新加载页面:

$crawler = $client->reload();