Неожиданное тестовое поведение в Laravel Dusk - PullRequest
0 голосов
/ 20 марта 2019

У меня есть тест, и я хочу использовать if/else:

   public function testLocal() {

        $this->browse(function (Browser $browser) {
            $browser->visit('')
                ->type('cro_user_email', '1')
                ->type('cro_user_password', '1')
                ->press('LOG IN')
                ->pause(1500)
                ->click('div > section.c-clients > div:nth-child(1) > div:nth-child(2) > a')
                ->click('td.tablesaw-swipe-cellpersist > a');


            if ($browser->assertVisible('div > nav > a > i')) {
                    $browser->click('div > nav > a > i');

            } elseif ($browser->assertMissing('div > nav > a > i')) {
            $browser->quit();
            }
        });
    }
}

Проблема в том, что моя IDE показывает мне эту ошибку:

Facebook\WebDriver\Exception\NoSuchElementException : no such element: Unable to locate element: {"method":"css selector","selector":"body div > nav > a > i"}

Что я могу сделать?

1 Ответ

0 голосов
/ 20 марта 2019

Ваша проблема в условии if:

if ($browser->assertVisible('div > nav > a > i')) {

Код $browser->assertVisible('div > nav > a > i') не вернет истину / ложь, но вернее или выдаст исключение.

Вместо использования if / else используйте обработку исключений следующим образом:

try {
    $browser->assertVisible('div > nav > a > i');
} catch (\Facebook\WebDriver\Exception\NoSuchElementException $exception) {
    $browser->assertMissing('div > nav > a > i');
}
$browser->quit();
...