私はCSSセレクタを持っていて、セレンでそれを適用しようとしていました。 CSSセレクターは.parentclass:not(:has(.childclass))
です。クラスchildclass
を持つ子孫要素を持たないすべての親要素を取得しようとしています。これはjQueryで完璧に動作します。しかし、セレンではうまくいかないようです。特定のクラスの子孫のないすべての要素のXPath?
私はXPathを試してみることにしました。上記のCSSセレクタとXPathの同等の機能は何ですか?私は次のように働くことができました: //*[contains(@class, 'parentclass')]
。しかし、これは状態の最初の部分です。 XPathで、CSSクラスの子クラスを持つ子を含んでいない親だけが必要であると私はどのように言えますか?
残念ながら、推奨される解決策は機能しません。それでも、すべての親を返す。ここに私のXPath: '// li [contains(@class、 's-result-item')]ではなく' * '(@class、' s-sponsored-list-header '))] 'があります。このクエリは、クラス 's-sponsored-list-header'を持つ子要素を持つものであっても、クラス' s-result-item'を持つすべての 'li'を返します。しかし、クラス 's-sponsored-list-header'を持つ子要素を一切含まない親だけが必要です。 –
ところで、子要素は第1レベルの子供を意味しません。それは、親の中のどのレベルでも可能です。たぶん、これが私がすべての親を得ている理由です。 –
次のXPathの動作がうまくいきます: '// li [contains(@class、 's-result-item')ではなく、(.//* [@class、 's-sponsored-list-header' )] '。違いは、私はこの場合、私は親の中の任意のレベルで子要素を見つけることを試みていると信じている第二の条件にのみです。私は正しい?それは正しいクエリですか? –