2017-10-11 18 views
0

J'utilise un modèle Page Object Model avec PageFactory pour initialiser IWebElement propriétés/champs. Mon problème est que je veux avoir une classe dérivée qui a substitué IWebElement avec différents attributs [FindsBy]. Ma classe de base:Attribut FindsBy de substitution au sélénium dans la classe dérivée

public class ConfigurationMenuPage : PageInfo, IConfigurationMenuPage 
{ 
    private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); 

    [FindsBy(How = How.Id, Using = "ctl00_contents_ctl27")] 
    protected virtual IWebElement _campaignsConfigLink { get; set; } 

Et ma classe dérivée:

public class ConfigurationMenuPage21 : ConfigurationMenuPage 
{ 
    [FindsBy(How = How.Id, Using = "otherId")] 
    protected sealed override IWebElement _campaignsConfigLink { get; set; } 

Le problème est que _campaignsConfigLink propriété initialise avec l'attribut de base (avec id « ctl00_contents_ctl27), au lieu overrided un (avec id otherId) Comment. puis-je forcer overrided propriété pour initialiser avec son FindsBy attribut?

Cordialement,

Cybul26

Répondre

0

Pourquoi ne pas simplement supprimer la déclaration dans ConfigurationMenuPage et laisser la classe dérivée le déclarer? Une solution de contournement consiste à utiliser un sélecteur CSS avec un opérateur OR, #ctl00_contents_ctl27, #otherId.

+0

Merci pour la relecture. J'ai décidé de 'ConfigurationMenuPage' être une classe abstraite avec des propriétés abstraites et laisser les classes dérivées déclarer ses propriétés. –