2017-12-18 13 views
2

私はpythonでsplinterモジュールを使用しています。私は、要素が可視であるかどうかをページ上にチェックする必要があり、一見すると唯一の方法は検出できないstyle="display: none;"です。Splinter:スタイルで検索

どうすればよいですか?

答えて

1

あなたが.visible attributeを使用し、要素が表示されているか、いないことを確認する必要がある場合:

browser.find_by_css('h1').first.visible 

.visibleがある「自然」のハンドルthis WebDriver specificationに基づいていますis_displayed()のpython-セレン法に基づいていることに注意してくださいとりわけstyle="display: none;"の場合。


あなたがが、何らかの理由であなたは、もちろん、CSSのセレクタを使用して行うことができ、要素を見つけるためにstyle値を使用する必要がある場合:

browser.find_by_css('[style="display: none;"]') 

しかし、これは一般的ですこの要素を見つけるための他の方法を探すべきです。

あなたも、常に複数の要素を検索し、例えば、唯一の目に見えない要素をフィルタリングすることができますことを覚えておいてください:

for h1 in browser.find_by_css('h1'): 
    if not h1.visible: 
     # found an invisible h1 here 
+0

注 'find_by_css(「[スタイル=『表示:なし;』]」)は'意志その正確なスタイルを持つ要素だけを検索し、要素は祖先によって隠されて継承されるか、そのようなCSSは 'style'タグの一部にすぎません。 '.visible'ルートを取っていない場合は、おそらくXPath([this](https://stackoverflow.com/a/651801/240443)、browser.find_by_xpath( '// div [ @Amadanええ、文字列の一致は本当に本当に壊れやすいです(ここでは、(表示スタイル: '表示:なし'))] // * ') ' – Amadan

+0

部分文字列のチェックでも簡単に破損することがあります。 'display:'の後と 'none'の前に空白はありません。メモをありがとう! – alecxe

関連する問題