Reputation:
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
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