3

我正在尝试检查laravel Dusk包含其他可点击链接的复选框,例如Terms of ServicePrivacy Policy 复选框的屏幕截图

当我尝试在测试中选中此复选框时,出现以下错误

Element is not clickable at point (466, 438). Other element would receive the click: <label class="mt-checkbox mt-checkbox-outline">...</label>

这就是我想要做的

public function testRegister()
{
    $template = factory(User::class)->make();

    $this->browse(function (Browser $browser) use ($template) {
        $browser
            ->visit(new Register)
            ->type('name', $template->name->full)
            ->type('phone', $template->phone)
            ->type('email', strtoupper($template->email))
            ->type('password', 'dummy-pass')
            ->check('agree')
            ->press('Create Account')
            ->assertRouteIs('dashboard')
            ->assertAuthenticated();
    });

    $this->assertDatabaseHas('users', [
        'email' => $template->email,
    ]);
}

我尝试使用最大化和滚动浏览器

$browser->maximize();
$browser->driver->executeScript('window.scrollTo(0, 400);');

除了使用check方法之外,我还尝试将click方法与按钮选择器一起使用,例如

$browser->click('input#button-selector');

我没有找到解决这个问题的方法。有没有办法解决这个问题?我错过了什么吗?

4

2 回答 2

4

我通过使用outer label选择器而不是复选框名称来修复它。例如,对于我的问题,这就是我对测试用例所做的。

public function testRegister()
{
    $template = factory(User::class)->make();

    $this->browse(function (Browser $browser) use ($template) {
        $browser
            ->visit(new Register)
            ->type('name', $template->name->full)
            ->type('phone', $template->phone)
            ->type('email', strtoupper($template->email))
            ->type('password', 'dummy-pass')
            ->check('@agree')
            ->press('Create Account')
            ->assertRouteIs('dashboard')
            ->assertAuthenticated();
    });

    $this->assertDatabaseHas('users', [
        'email' => $template->email,
    ]);
}

在我的Register页面中,我agree在方法中注册了选择器elements,如下所示

public function elements()
{
    return [
        '@agree' => 'label.mt-checkbox',
    ];
}

它确实通过使用复选框的外部标签选择器解决了我的问题。我希望这对将来的某些人有所帮助。

于 2018-01-17T05:06:59.520 回答
0

在我的情况下,它不起作用,因为我有两个具有相同元素的模态窗口。

于 2020-08-27T20:03:36.217 回答