我正在尝试使用laravel Dusk
复选复选框,其中包含其他可点击的链接,例如Terms of Service
和Privacy 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');
我找不到解决这个问题的方法。有什么方法可以解决这个问题吗?我错过了什么吗?
答案 0 :(得分:1)
我使用var
选择器而非复选框名称修复了此问题。例如,对于我的问题,这就是我对我的测试用例所做的事情。
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
它确实通过使用复选框的外部标签选择器解决了我的问题。我希望这将有助于将来的某些人。
答案 1 :(得分:0)
在我的情况下,它不起作用,因为我有两个具有相同元素的模态窗口。