user9347168
user9347168

Reputation:

Selenium (Java) and trouble getting Select element

I'm having trouble getting and using a Select element using @FindBy.

The markkup:

<td>
   <felt [control]="kontactTypeFC" [classes]="'hb-distNone'">
      <label for="contactTypes" class="hb-label">Kontakttype</label>
      <select formControlName="contactType" class="hb-inputfield" id="contactTypes" [attr.disabled]="erSakenLukket(sak)">
         <option *ngFor="let option of contactTypeOptions" [ngValue]="option.type" [disabled]="option.disabled"> {{option.text }} </option>
      </select>
   </felt>
</td>

The following selenium code works fine

return new Select(this.element.findElement(By.id("contactTypes")));

However, this does not:

@FindBy(id = "contactTypes")
public Select contactTypes;

return contactTypes;

This returns null, creating an NPE.

I'm using the exact same method for getting other elements on the page. Only difference is that the other elements are WebElement, not Select.

NB: I am of course initializing the page object:

PageFactory.initElements(driver, this);

Upvotes: 0

Views: 146

Answers (1)

Guy
Guy

Reputation: 51009

Select is a class which receives WebElement in the constructor, you can't use page factory to initialize it. Locate the WebElement with @FindBy and use it with the Select

@FindBy(id = "contactTypes")
public WebElement contactTypes;

new Select(contactTypes);

Upvotes: 1

Related Questions