2017-09-29 15 views
0

'data-message-id = XX'のサブクラスを持つ 'message clearfix default'のクラスを持つdivがあります。私の目標はそのID 96375050を取得することです。iveは.find_element_by_class_nameを試みましたが、クラスは 'message clearfix default'で、スペースのために失敗します。また、これは表示された部分ではないので、CSSを添付することもありません。Selenium:空白を持つクラスを持つdivのIDを取得

enter image description here

にはどうすれ96375050バックを得ることができますか?

<div class="message clearfix default" data-message-id="96375050" data-user-id="186772" data-user-login="MAS1271" id="message_96375050" data-ape="messages_96375050"> 
+0

[コードのスクリーンショットは悪い考えです](https://meta.stackoverflow.com/questions/303812/discourage-screenshots-of-code-and-or-errors)の理由をお読みください。コードを貼り付け、正しくフォーマットします。 – JeffC

答えて

2

あなたは要素を取得するためにfind_element_by_xpathを使用することができます:私はあなたが既に答えを受け入れ知っ

elem = driver.find_element_by_xpath('//li[@class="messageli"]//div[contains(@class,"message") and contains(@class,"default")]') 
+0

おかげで多く!これは私がHTML文全体を元に戻してからそれを元に戻すのを防ぎます:)。 – Mal229

2

elem = driver.find_element_by_xpath('//li[@class="messageli"]//div[@class="message clearfix default"]') 
msg_id = elem.get_attribute('data-message-id') 

[@class="text"]

は、完全一致を使用して、あなたのような and & contains組み合わせることができますこの場合はCSSセレクタを使う方がはるかに優れています。 XPathを選択すると、完全な文字列一致がクラスを検索しているため、クラスの順序が変更されたり別のクラスが追加されたりすると、セレクタは機能しなくなります。あなたはCSSセレクタを使用している場合、注文はCSSセレクタのためのより良いサポートもあります

msg_id = driver.find_element_by_css_selector("div.message.clearfix.default").get_attribute('data-message-id') 

問題ではないと彼らは、XPathよりも高速です。

+0

ありがとうございましたjeff、両方のオプションは将来私と他の誰かのためにうまくいくでしょう。あなたのご意見ありがとうございます。 – Mal229

関連する問題