硒(Java)和获取Select元素的麻烦

时间:2018-11-08 09:50:29

标签: java selenium select selenium-webdriver

我无法使用@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);

1 个答案:

答案 0 :(得分:2)

Select是一个在构造函数中接收WebElement的类,您不能使用页面工厂对其进行初始化。用WebElement找到@FindBy,并与Select

一起使用
@FindBy(id = "contactTypes")
public WebElement contactTypes;

new Select(contactTypes);