> ## Documentation Index
> Fetch the complete documentation index at: https://parttio-dramafinder-4.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# SelectElement

> Playwright element wrapper for Vaadin Select component

# SelectElement

Playwright element wrapper for `<vaadin-select>`. Provides helpers to open the overlay and pick items by visible text, along with aria/placeholder/validation mixins.

## Component Tag

`vaadin-select`

## Implements

* `FocusableElement`
* `HasAriaLabelElement`
* `HasInputFieldElement`
* `HasPrefixElement`
* `HasThemeElement`
* `HasPlaceholderElement`
* `HasEnabledElement`
* `HasTooltipElement`
* `HasValidationPropertiesElement`

## Factory Methods

### getByLabel

```java theme={null}
public static SelectElement getByLabel(Page page, String label)
```

Get the `SelectElement` by its label. Uses ARIA role `BUTTON`.

<ParamField path="page" type="Page" required>
  The Playwright page
</ParamField>

<ParamField path="label" type="String" required>
  The accessible label of the field
</ParamField>

**Returns:** The matching `SelectElement`

## Constructor

### SelectElement

```java theme={null}
public SelectElement(Locator locator)
```

Create a new `SelectElement`.

<ParamField path="locator" type="Locator" required>
  The locator for the `<vaadin-select>` element
</ParamField>

## Methods

### selectItem

```java theme={null}
public void selectItem(String item)
```

Select an item by its visible label.

<ParamField path="item" type="String" required>
  Label of the item to select
</ParamField>

### getValue

```java theme={null}
@Override
public String getValue()
```

Get the selected value label for single-select.

**Returns:** The label of the selected value

### getAriaLabel

```java theme={null}
@Override
public String getAriaLabel()
```

Get the ARIA label text.

**Returns:** The ARIA label or `null` if not set

### assertAriaLabel

```java theme={null}
@Override
public void assertAriaLabel(String ariaLabel)
```

Assert the ARIA label text.

<ParamField path="ariaLabel" type="String">
  Expected ARIA label, or `null` to assert it's hidden
</ParamField>

### assertPlaceholder

```java theme={null}
@Override
public void assertPlaceholder(String placeholder)
```

Assert the placeholder text.

<ParamField path="placeholder" type="String" required>
  Expected placeholder text
</ParamField>

### assertValue

```java theme={null}
@Override
public void assertValue(String expected)
```

Assert the selected value label equals the expected string.

<ParamField path="expected" type="String">
  Expected label or empty for no selection
</ParamField>

### getInputLocator

```java theme={null}
@Override
public Locator getInputLocator()
```

Get the locator for the value slot element.

**Returns:** Locator for the input element

### getAriaLabelLocator

```java theme={null}
@Override
public Locator getAriaLabelLocator()
```

Get the locator for the sr-label slot.

**Returns:** Locator for the ARIA label element

### getFocusLocator

```java theme={null}
@Override
public Locator getFocusLocator()
```

Get the locator to use for focus operations.

**Returns:** The input locator

### getEnabledLocator

```java theme={null}
@Override
public Locator getEnabledLocator()
```

Get the locator to use for enabled/disabled checks.

**Returns:** The input locator

### getLabelLocator

```java theme={null}
@Override
public Locator getLabelLocator()
```

Get the locator for the label slot.

**Returns:** Locator for the label element

## Usage Examples

### Basic Selection

```java theme={null}
SelectElement select = SelectElement.getByLabel(page, "Sort by");
select.assertVisible();
select.assertValue(null);
select.selectItem("Rating: high to low");
select.assertValue("Rating: high to low");
```

### Validation

```java theme={null}
SelectElement select = SelectElement.getByLabel(page, "Select with theme");
select.assertValue(null);
select.assertValid();
ButtonElement.getByText(page, "Validate").click();
select.assertInvalid();
assertThat(select.getErrorMessageLocator()).hasText("Required field");
```

### Placeholder

```java theme={null}
SelectElement select = SelectElement.getByLabel(page, "Select with placeholder and clear button");
select.assertVisible();
select.assertPlaceholder("Enter text here");
assertEquals("Enter text here", select.getPlaceholder());
```

### Prefix

```java theme={null}
SelectElement select = SelectElement.getByLabel(page, "Sort by");
assertThat(select.getPrefixLocator()).isVisible();
assertThat(select.getPrefixLocator()).hasText("Prefix");
select.assertPrefixHasText("Prefix");
assertEquals("Prefix", select.getPrefixText());
```

### Focus and Enabled State

```java theme={null}
SelectElement select = SelectElement.getByLabel(page, "Sort by");
select.assertIsFocused();

SelectElement disabledSelect = SelectElement.getByLabel(page, "Enabled/Disabled Field");
disabledSelect.assertDisabled();

page.locator("#enable-disable-button").click();
disabledSelect.assertEnabled();
```

### ARIA Label

```java theme={null}
SelectElement select = SelectElement.getByLabel(page, "Invisible label");
select.assertVisible();
select.assertAriaLabel("Invisible label");
```

### Tooltip

```java theme={null}
SelectElement select = SelectElement.getByLabel(page, "Sort by");
select.assertVisible();
select.assertTooltipHasText("Tooltip for select");
```
