Como inicializar SelectElements ao usar PageFactory / FindsBy no Selenium C #?

Estou criando um modelo de objeto de página no Selenium WebDriver para C #, usando o PageFactory.

Infelizmente, descobri que oFindsByAttribute&nbsp;não inicializará umSelectElement&nbsp;(HTML<select>&nbsp;tag / menu suspenso). Encontrei algumas ideias para contornar isso até agora, mas nenhuma delas é ideal:

PageFactory&nbsp;eFindsByAttribute&nbsp;estãosealed, então não posso forçá-lo apenas herdando esses.Instanciando manualmente umSelectElement&nbsp;de umIWebElement&nbsp;em cada método é bastante confuso e duplicativo. Também ignora a aparente espera internaPageFactory&nbsp;e jogaNoSuchElementExceptions, a menos que eu adicione uma espera toda vez que fizer isso - o que exigiria repetir o localizador em todo o lugar, derrotando (parte) o propósito do POM.Envolvendo cadaIWebElement&nbsp;propriedade com umSelectElement&nbsp;A propriedade é menos bagunçada, mas ainda tem o mesmo problema de espera acima.

Até agora, a melhor opção é # 3, e escrever um wrapper paraSelectElement&nbsp;isso apenas adiciona uma espera a todos os métodos. Embora esta soluçãotrabalhos, aumentará bastante o código de cada página, pois, em vez deste bonito código (hipotético):

[FindsBy(How = How.Id, Using = "MonthDropdown")]
public SelectElement MonthDropdown;

Estou preso com um invólucro de invólucro (algo que prefiro evitar) e:

[FindsBy(How = How.Id, Using = "MonthDropdown")]
private IWebElement _monthDropdown;
public Selector MonthDropdown
{
    get { return new Selector(MonthDropdown, Wait); }
}

ComSelector&nbsp;sendo oSelectElement&nbsp;invólucro, que também precisa receber oIWait<IWebDriver>&nbsp;para que possa esperar e instanciar um novoSelector&nbsp;toda vez que eu acessá-lo.

Existe um jeito melhor de fazer isso?

EDITAR:&nbsp;Coloque sonolentamente modificadores de acesso incorretos. Fixo. Obrigado, @JimEvans.