2016-11-03 4 views
2

私が開発しているDOMには、ネストされた要素(ボックス内のボックス構造)がたくさんあり、POMデザインパターンを使用してコードするのが難しいと感じています。[FindsBy]注釈を使用して、内部要素を見つけるために見つかった要素を再利用できるようにする方法はありますか?

FindsBy、FindsByAll、FindsBySequenceを使用しましたが、コンテナの内部要素を識別する必要があるときはいつでも、外部要素/コンテナの検出を含める必要があります。

[FindsBy(How = How.Id、Using = "container-dimpanel")]の代わりに 'DimensionPanel'要素を再利用する方法はありますか?

例:

[FindsBy(How = How.Id, Using = "container-dimpanel")] 
    public IWebElement DimensionPanel { get; set; } 

    #region DimensionPanel elements 
    [FindsBySequence] 
    [FindsBy(How = How.Id, Using = "container-dimpanel")] 
    [FindsBy(How = How.Id, Using = "metrics-selector-container")] 
    [FindsBy(How = How.TagName, Using = "a")] 
    public IWebElement MetricsButton { get; set; } 

    [FindsBySequence] 
    [FindsBy(How = How.Id, Using = "container-dimpanel")] 
    [FindsBy(How = How.Id, Using = "metrics-selector-container")] 
    [FindsBy(How = How.TagName, Using = "span")] 
    public IWebElement MetricsCount { get; set; } 
    #endregion DimensionPanel elements 
+0

ようFindByアノテーションを使用することができます複数のfindbysの代わりに内側の要素。 DimensionalPanel Web要素を再利用して、Web要素のfindElementメソッドを使用して内部要素を検索することができます。 FindBysアノテーションの別の要素の検索コンテキストになるように要素を設定するというコンセプトはありません。セリウムのモバイル拡張Appiumは、助けるかもしれないウィジェットの概念を持っています。C#のappiumのコードでは見ていないが、Javaでは、非モバイルシナリオにも使用できるウィジェットクラスがあります。あなたはC#を実装して再利用します。 – Grasshopper

+0

答えをありがとう、私は内部要素を探すためにFindElementを使用する予定です。なぜなら、DOMは異なるコンテナ内の同じ要素で構成されており、それらのロケータを使用することによって、要素が変更された場合には、はるかに長くなり、デバッグするのに難しいパスを提供する必要があるからです。 –

答えて

0

私はあなたのためであれば、これは役に立つかわからないが、Javaには、あなたがに到達するために、単一のCSSやXPathのセレクターをお試しください。この

@FindBy (id="metrics-selector-container") 
public WebElement DimensionPanel; 
関連する問題