You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Dusk测试遇ElementClickInterceptedException问题求助

关于Laravel Dusk测试中ElementClickInterceptedException的问题排查请求

我们团队在学校项目的Laravel网站开发中,使用Laravel Dusk进行自动化测试时,反复遇到ElementClickInterceptedException错误:

element click intercepted: Element is not clickable at point

该错误并非所有测试都会触发,且在不同电脑上失败的测试案例不同;但手动在多款浏览器中测试网站功能均正常。

失败的测试示例

public function testCreateMember(): void
{
    // Truncate the database
    $this->artisan('migrate:fresh --seed');

    $this->browse(function (Browser $browser) {
        $browser->loginAs(1)
                ->visit('/members')
                ->clickLink('Voeg nieuw lid toe')
                ->type('name', 'Freek Vonk')
                ->type('email', 'freek@vonk.nl')
                ->click('input[id="1"]')
                ->scrollIntoView('button[type="submit"]')
                ->waitUntilEnabled('button[type="submit"]')
                ->press('Voeg lid toe')
                ->assertPathIs('/members')
                ->assertSee('Lid opgeslagen.');
    });
}

已尝试的调试步骤(均无效)

  • 在每次按钮点击前添加waitFor()
  • 在每次按钮点击前添加pause()
  • 临时禁用输入元素:当禁用几乎所有输入时测试恢复正常,但重新添加部分输入后又失败,且与禁用哪些输入无关,仅与数量相关
  • 使用不同选择器:ID、Dusk选择器、CSS类
  • 调整提交按钮位置
  • 移除提交按钮的所有CSS样式

完整错误栈

Facebook\WebDriver\Exception\ElementClickInterceptedException: element click intercepted: Element is not clickable at point (455, 975)
  (Session info: chrome=113.0.5672.93)

C:\school\semester 4\SCRUM-SOp\vendor\php-webdriver\webdriver\lib\Exception\WebDriverException.php:96
C:\school\semester 4\SCRUM-SOp\vendor\php-webdriver\webdriver\lib\Remote\HttpCommandExecutor.php:359
C:\school\semester 4\SCRUM-SOp\vendor\php-webdriver\webdriver\lib\Remote\RemoteWebDriver.php:605
C:\school\semester 4\SCRUM-SOp\vendor\php-webdriver\webdriver\lib\Remote\RemoteExecuteMethod.php:23
C:\school\semester 4\SCRUM-SOp\vendor\php-webdriver\webdriver\lib\Remote\RemoteWebElement.php:77
C:\school\semester 4\SCRUM-SOp\vendor\laravel\dusk\src\Concerns\InteractsWithElements.php:332
C:\school\semester 4\SCRUM-SOp\tests\Browser\TeamTest.php:321
C:\school\semester 4\SCRUM-SOp\vendor\laravel\dusk\src\Concerns\ProvidesBrowser.php:70
C:\school\semester 4\SCRUM-SOp\tests\Browser\TeamTest.php:312
C:\school\semester 4\SCRUM-SOp\vendor\laravel\framework\src\Illuminate\Foundation\Testing\TestCase.php:173

测试涉及的页面示例代码

@extends('layouts.layout')

@section('content')

@if(session()->get('success'))
    <div class="alert alert-success">
        {{ session()->get('success') }}
    </div>
@endif

<div class="py-12">
    <div class="max-w-7xl mx-auto sm:px-6 lg:px-8 space-y-6">
        <div class="p-4 sm:p-8 bg-white dark:bg-gray-800 shadow sm:rounded-lg">
            <div class="max-w-xl">
                <h2 class="text-lg font-medium text-gray-900 dark:text-gray-100">
                    {{ __('Gebruiker aanmaken') }}
                </h2>
                <form method="POST" action="/admin/submit" class="mt-6 space-y-6">
                    @csrf
                    <div>
                        <label for="role" class="col-sm-2 col-form-label">
                            Functie
                        </label>
                        <div class="col-sm-8">
                            <select name="role">
                                <option value="coach">
                                    Coach
                                </option>
                                <option value="supervisor">
                                    Begeleider
                                </option>
                                <option value="admin">
                                    Beheerder
                                </option>
                            </select>
                        </div>
                    </div>

                    <div>
                        <label for="name" class="col-sm-2 col-form-label">
                            Naam
                        </label>
                        <div class="col-sm-8">
                            <input type="name" class="form-control" id="name" placeholder="bv: jan de graaf" name="name"  value="{{old('name')}}">
                        </div>
                        @error('name')
                        <div class="alert alert-danger">{{ $message }}</div>
                        @enderror
                    </div>

                    <div>
                        <label for="email" class="col-sm-2 col-form-label">
                            Email adres
                        </label>
                        <div class="col-sm-8">
                            <input type="email" class="form-control" id="email" placeholder="bv: jan@gmail.com" name="email"  value="{{old('email')}}">
                        </div>
                        @error('email')
                        <div class="alert alert-danger">{{ $message }}</div>
                        @enderror
                    </div>

                    <div>
                        <label for="password" class="col-sm-2 col-form-label">
                            Wachtwoord
                        </label>
                        <div class="col-sm-8">
                            <input type="password" class="form-control" id="password" placeholder="bv: jan123" name="password" value="{{old('password')}}">
                        </div>
                        @error('password')
                        <div class="alert alert-danger">{{ $message }}</div>
                        @enderror
                    </div>

                    <div>
                        <label for="password_confirmation" class="col-sm-2 col-form-label">
                            Wachtwoord herhalen
                        </label>
                        <div class="col-sm-8">
                            <input type="password" class="form-control" id="password_confirmation" placeholder="herhaal wachtwoord" name="password_confirmation">
                        </div>
                        @error('password_confirmation')
                        <div class="alert alert-danger">{{ $message }}</div>
                        @enderror
                    </div>

                    <br />

                    <button type="submit" id="registreerknop" name="registreerknop" class="btn btn-outline-primary">Registreer gebruiker
                    </button>
                </form>
            </div>
        </div>
    </div>
</div>

@stop

恳请帮忙排查该错误的原因并提供修复方案。

内容的提问来源于stack exchange,提问作者KoenVerstappen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 02:52:07