selectOptionForSelect2('#my_select2', 'Option value'); * $t->selectOptionForSelect2('#my_select2', ['Option value 1', 'Option value 2']); * $t->selectOptionForSelect2('#my_select2', ['text' => 'Option text']); * $t->selectOptionForSelect2('#my_select2', ['id' => 'Option value', 'text' => 'Option text']); * * @param $selector * @param $option * @param int $timeout seconds. Default to 1 */ public function selectOptionForSelect2($selector, $option, $timeout = 5) { $t = $this->getAcceptanceModule(); $selector = $this->getSelect2Selector($selector); $this->waitForSelect2($selector, $timeout); if (is_int($option)) { $option = (string) $option; } if (is_string($option) || (is_array($option) && array_values($option) === $option)) { $t->executeJS('jQuery("'.$selector.'").selectSetNew('.json_encode($option).', "ID: " + '.json_encode($option).');', [$timeout]); } elseif (is_array($option)) { $optionId = 'null'; if (isset($option['text']) && empty($option['id'])) { $optionText = $option['text']; $optionId = <<executeJS($script, [$timeout]); } else { $t->fail(); } } }