Laravel 8 生成組件

2021-07-26 09:31 更新

為了生成一個(gè)組件,使用 Artisan 命令 dusk:component 即可生成組件。新生成的組件位于 test/Browser/Components 目錄中:

php artisan dusk:component DatePicker 

如上所示,這是生成一個(gè) 「日期選擇器」(date picker) 組件的示例,這個(gè)組件可能會(huì)貫穿使用在你應(yīng)用程序的許多頁面中。在整個(gè)測試套件的大量測試頁面中,手動(dòng)編寫日期選擇的瀏覽器自動(dòng)化邏輯會(huì)非常麻煩。 更方便的替代辦法是,定義一個(gè)表示日期選擇器的 Dusk 組件,然后把自動(dòng)化邏輯封裝在該組件內(nèi):

<?php

namespace Tests\Browser\Components;

use Laravel\Dusk\Browser;
use Laravel\Dusk\Component as BaseComponent;

class DatePicker extends BaseComponent
{
    /**
     * 獲取組件的 root selector
     *
     * @return string
     */
    public function selector()
    {
        return '.date-picker';
    }

    /**
     * 瀏覽器包含組件的斷言
     *
     * @param  Browser  $browser
     * @return void
     */
    public function assert(Browser $browser)
    {
        $browser->assertVisible($this->selector());
    }

    /**
     * 讀取組件的元素快捷方式
     *
     * @return array
     */
    public function elements()
    {
        return [
            '@date-field' => 'input.datepicker-input',
            '@year-list' => 'div > div.datepicker-years',
            '@month-list' => 'div > div.datepicker-months',
            '@day-list' => 'div > div.datepicker-days',
        ];
    }

    /**
     * 選擇給定日期
     *
     * @param  \Laravel\Dusk\Browser  $browser
     * @param  int  $year
     * @param  int  $month
     * @param  int  $day
     * @return void
     */
    public function selectDate($browser, $year, $month, $day)
    {
        $browser->click('@date-field')
                ->within('@year-list', function ($browser) use ($year) {
                    $browser->click($year);
                })
                ->within('@month-list', function ($browser) use ($month) {
                    $browser->click($month);
                })
                ->within('@day-list', function ($browser) use ($day) {
                    $browser->click($day);
                });
    }
} 
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號