我无法在由data属性确定的特定输入框中输入文本。同一类可能会有数十个输入,因此我不希望在整个页面上添加dusk='xxxx'
。
为了提高路由和服务器端的效率,AJAX函数从输入数组和路由中拉出一种类型,并将其转换为分支动作的函数。
刀片代码:
{!! Form::text('question[]', null,
['class'=>'form-control actionChange', "data-id"=>$question->id, "data-type"=>'question']) !!}
该页面以其他类型不同的其他问题开头,因此我尝试使用nth-child(x)
来抓住模式中的选择器,但没有成功。我也尝试过使用$browser->script()
。
阅读几个类似的问题,例如this one,看来模态内的循环可能是最好的方法。此方法将选择器正确分配给循环变量$input
。它可以正确clear()
的数据,并且我已经使用click()
测试了类似的代码,并且可以成功运行。但是,它将不在输入中输入数据。 type()
和keys()
似乎不适用于RemoteWebElement
,因此我认为输入数据的唯一选择是sendKeys()
。
黄昏测试代码:
$browser->assertPathIs('/notice')
->whenAvailable('.modal', function($modal) use($browser) {
$modal->assertSee('Survey for:')
->waitFor('#heading')
// WORKS fine
->keys('#heading', 'Edited Heading for Survey', '{enter}')
->waitFor('.actionSurvey');
// Edit a question -- NOT WORKING
foreach ($browser->elements('.actionChange') as $input) {
$dataType = $input->getAttribute('data-type');
if($dataType === 'question') {
$input->clear() // WORKS Fine
->sendKeys('Edited_Question') // NOT successful
break;
我尝试使用和不使用clear()
方法,以及模态循环内外的各种选择器选择。对于script()
也是一样,也尝试使用$modal
变量来获取元素,但这只是一个猜测,因为此时我有点不理解。
我可能会提出一些基本的要求,但我不明白为什么一种方法有效,而另一种却不在同一句柄上。