私の Selenium アプリケーションでは、最高の要素を選択しようとしていますz-index
。その値は要素自体では定義されていませんが、祖先ノードで定義されています (ネスト レベルは不明です)。さらに、display: none
それを使用しても祖先が表示されない場合は、返されるべきではありません。
HTML の例:
<div class="container" style="z-index: 10">
<div style="display: none">
<!-- this should not be selected because it is invisible (and the z-index is lower than the others) -->
<div myattr="example"></div>
</div>
</div>
<div class="container" style="z-index: 100">
<div>
<!-- this should not be selected because the z-index is lower than the others -->
<div myattr="example"></div>
</div>
</div>
<div class="container" style="z-index: 1000">
<div>
<!-- this should be selected because it is visible and has the highest z-index -->
<div myattr="example"></div>
</div>
</div>
myattr="example"
現在、祖先を持たないすべての要素を選択する正規表現がありますdisplay: none
:
//div[@myattr='example'
and not(ancestor::div[contains(@style,'display:none')])
and not(ancestor::div[contains(@style,'display: none')])]
最高の z-index を持つ要素を選択するには、追加の条件が必要です。いわば、他の要素の上に表示されます。見つかったノードごとに、特定のクラスを持つノードが見つかるまで、すべての祖先を調べる必要があります (container
この例では)。次に、最大の z-index 祖先を持つ要素のみを返します。
XPathでもそれは可能ですか?