Search code examples
phplaravel-5laravel-dusk

How to select random values from an array of dropdowns in Laravel Dusk?


I am new to Laravel Dusk, and currently working on a simple project where you can add multiple dropdowns. The dropdowns have a name like name = "item[]". How can I select each dropdown and select random options?

I have tried :

$items = $browser->elements('input[name^="item[]"');

foreach ($items as $item) {
    $item->select(); // Select random options
}

but it doesn't work. There's no error, test and assertions are OK but it's not selecting values from the dropdowns.

Edit

Just tried :

$items = $browser->elements('select[name^="item[]"'); // Change input to select

foreach ($items as $item) {
    $item->select(); // Select random options
}

it now gives me an error "call to undefined method select()".


Solution

  • Use this:

    use Facebook\WebDriver\WebDriverBy;
    
    $items = $browser->elements('select[name^="item[]"]');
    
    foreach ($items as $item) {
        $options = $item->findElements(WebDriverBy::cssSelector('option:not([disabled])'));
    
        $options[array_rand($options)]->click();
    }