3

我写了一个 Laravel Dusk 测试。我试图断言在模式打开后是否可以看到某些文本。所以,我正在使用该whenAvailable方法。但是当我可以在屏幕截图中看到文字时它失败了。

$browser->press('@finish-setup-button')
        ->whenAvailable('#modal-payment-info', function ($modal) use($paymentInfo) {
            $modal->assertSee(html_entity_decode(__('account_setup.payment')))
                  ->type('name', $paymentInfo->name)
                  ->type('iban', $paymentInfo->iban)
                  ->type('bic', $paymentInfo->bic)
                  ->press('@subscribe-button');
        });

我收到以下消息:

有 1 次失败:

1) Tests\Browser\RegistrationTest::testRegistration 在元素 [body #modal-payment-info] 中没有看到预期的文本 [Payment]。断言 false 为 true 失败。

截屏:

在此处输入图像描述

我究竟做错了什么?

4

2 回答 2

4

我有一个解决方法。我添加了 1 秒的暂停,效果很好。

$browser->press('@finish-setup-button')
        ->whenAvailable('#modal-payment-info', function ($modal) use($paymentInfo) {
            $modal->pause(1000)
                  ->assertSee(html_entity_decode(__('account_setup.payment')))
                  ->type('name', $paymentInfo->name)
                  ->type('iban', $paymentInfo->iban)
                  ->type('bic', $paymentInfo->bic)
                  ->press('@subscribe-button');
        });
于 2018-10-30T11:25:38.400 回答
2

我刚刚遇到了同样的问题,我认为在测试断言时它根本不存在,但在截取屏幕截图时出现。

除了添加 1 秒延迟之外,您还可以使用->waitForText()这将消除大多数不必要的等待时间。

于 2020-11-17T09:23:50.913 回答