通过浏览器(黄昏)测试输入的ID名称中的方括号

时间:2019-01-10 11:18:01

标签: laravel

我有问题。当我使用Laravel浏览器测试时,通常使用以下方法测试日期字段:

->script([
     "document.querySelector('#date_of_show').value = '2019-01-01'",
  ]);

有效。但是,当id的名称包含方括号时,选择器找不到它。示例:

->script([
     "document.querySelector('#items[0][date_of_show]').value = '2019-01-01'",
  ]);

我尝试了很多样式,但是我无法解决。 有人可以帮我吗?

谢谢

更新: 浏览器方法:

$this->browse(function(Browser $browser) use ($user, $buyer, $buyerSearch) {
        $browser
            ->loginAs($user)
            ->visit(route('buyer-search-properties.index', [$buyer, $buyerSearch]))
            ->check('items[0][check]')
            ->select('action', 'fixing-show')
            ->waitForText('Fixing Shows')
            ->script([
                "document.querySelector('#items\\[0\\]\\[date_of_show\\]').value = '2019-01-01'",
            ]);
        $browser
            ->click('Create');
    });

2 个答案:

答案 0 :(得分:0)

您需要转义括号。你可以试试看吗?

->script([
     "document.querySelector("#items\\[0\\]\\[date_of_show\\]").value = '2019-01-01'",
  ]);

编辑:下面是一个fiddle,用于演示实际操作。

编辑:我可能缺少一些东西,但是以下方法可以工作吗?

$browser
    ->loginAs($user)
    ->visit(route('buyer-search-properties.index', [$buyer, $buyerSearch]))
    ->check('items[0][check]')
    ->select('action', 'fixing-show')
    ->waitForText('Fixing Shows')
    ->value('#items\\[0\\]\\[date_of_show\\]', '2019-01-01');

答案 1 :(得分:0)

我解决了!可行!

->script([
      "document.querySelector('[name=\"items[0][date_of_show]\"]').value = '2018-12-20'",
     ]);