我无法使用@FindBy获取和使用Select元素。
标记:
<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>
以下硒代码可以正常工作
return new Select(this.element.findElement(By.id("contactTypes")));
但是,这不是:
@FindBy(id = "contactTypes")
public Select contactTypes;
return contactTypes;
这将返回null,创建一个NPE。
我正在使用完全相同的方法来获取页面上的其他元素。唯一的区别是其他元素是WebElement,而不是Select。
注意:我当然要初始化页面对象:
PageFactory.initElements(driver, this);
答案 0 :(得分:2)
Select
是一个在构造函数中接收WebElement
的类,您不能使用页面工厂对其进行初始化。用WebElement
找到@FindBy
,并与Select
@FindBy(id = "contactTypes")
public WebElement contactTypes;
new Select(contactTypes);