InvalidArgumentException:找不到带有 [Edit] 的正文、名称或 ID 属性的链接
Posted
技术标签:
【中文标题】InvalidArgumentException:找不到带有 [Edit] 的正文、名称或 ID 属性的链接【英文标题】:InvalidArgumentException: Could not find a link with a body, name, or ID attribute of [Edit] 【发布时间】:2017-04-19 20:32:35 【问题描述】:我正在测试一个带有一个按钮的页面,该按钮打开一个模式来编辑记录。
$this->visit('/admin/dashboard/units')
->see($site->name . ' ' . '~' . ' ' . 'Units')
->see($unit_type->name)
->see($unit->unit_type_id)
->see($unit->status)
->click('Edit')
在我的刀片文件中,我有:
<a class="button warning" data-open="editUnit $unit->id ">Edit</a>
还是不行
但我收到此错误:
有 1 个错误:
1) UnitsTest::testEditUnit InvalidArgumentException: 找不到 带有 [Edit] 的正文、名称或 ID 属性的链接。
更新
我也尝试过像这样传递一个 id
<a id="Edit" class="button warning" data-open="editUnit $unit->id ">Edit</a>
【问题讨论】:
您可以尝试给按钮一个唯一的 id,然后按它的 id 按下它。不知道为什么它找不到按钮 - 它实际上似乎是有效的。 很可能没有找到对象,因为它不是在测试期间创建的。尝试给它一个 id 并搜索它。另一种方法是转储输出并搜索实际内容。 我已经将 id 传递给 a 标签,但仍然没有工作 @melanholly 它创建了对象,因为->see($site->name)
工作正常
<a id="Edit"
id 应该是唯一的。如果您有多个其中之一,则框架可能无法找到它。这来自 `Symfony\Component\DomCrawler\
【参考方案1】:
问题是我正在单独测试编辑表单,但它是当前页面的一部分,处于模态。所以我像这样将测试与创建测试结合起来。
$this->visit('/admin/dashboard/units')
->see($site->name . ' ' . '~' . ' ' . 'Units')
->seePageIs('/admin/dashboard/units')
->type('Unit 1', 'name')
->select($unit_type->id, 'unit_type_id')
->press('Add Unit')
->see('Unit saved successfully')
->see('Unit 1')
->seeInDatabase('units', [
'name' => 'Unit 1',
'unit_type_id' => $unit_type->id
])
->click('Edit')
->type('Edited Unit', 'name')
->select($unit_type->id, 'unit_type_id')
->press('Save')
->see('Unit Updated Successfully')
->see('Edited Unit')
->seeInDatabase('units', [
'name' => 'Edited Unit',
'unit_type_id' => $unit_type->id
])
->click('Delete')
->press('Yes')
->see('Unit Deleted Successfully')
->dontSee('Edited Unit')
->dontSeeInDatabase('units', [
'name' => 'Edited Unit',
'unit_type_id' => $unit_type->id
]);
另外值得注意的是,从 laravel 5.4 开始,visit
、see
、click
等测试方法已被删除。看到这个link 和亚当有很好的升级tutorials
【讨论】:
以上是关于InvalidArgumentException:找不到带有 [Edit] 的正文、名称或 ID 属性的链接的主要内容,如果未能解决你的问题,请参考以下文章
PHPUnit + Selenium`InvalidArgumentException:找不到元素`
出现错误:InvalidArgumentException:无法找到名称为 [default] [App\User] 的工厂
(InvalidArgumentException(code: 0): Disk [public] 没有配置驱动程序 Voyager
Laravel:错误 InvalidArgumentException
InvalidArgumentException,“未找到视图”,在 Lumen 5.2.6 上
导入AppiumLibrary报错: ImportError: cannot import name 'InvalidArgumentException