Selenium (Java) and trouble getting Select element

632 views java
4

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);

answered question

1 Answer

6

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);

posted this

Have an answer?

JD

Please login first before posting an answer.