2017-02-24 10 views
0

私はウェブスクレイピングの経験がなく、例文とドキュメントに「Pay Monthly」というテキストのボタンをクリックする経験はありません。このボタンは、コピーする必要のあるテキストを動的に表示します。どのように私はこれをクリックして、最初に表示し、次に表示されているテキストを読みに行くのですか?私はセレンとそれを試しています、美しいでしょうか?私は、このコード行をしようとしているが、何もしていません。キーが特定の値に等しい辞書リストから値リストを返す

driver.find_element_by_xpath("//a[text()[contains(.,'Pay Monthly')]]").click() 
+0

Beautifulsoupはこの種の作業にはあまり適していません。 htmlを解析するだけで情報を抽出することができますが、実際のWebページと実際にやりとりすることとはほとんど関係ありません。 –

+0

「何かをしている」という意味ですか?例外が発生するか、ボタンをクリックしていないだけですか?テキストは ''毎月支払う ''の代わりに同じボタンに表示されるはずですか? – Andersson

答えて

0

常に要素を見つけるために、絶対と相対のxpathの混合物を使用することをお勧めします。

最初に見つけなければならないのは、一意の識別子を持つ親です。あなたが言及した要素には静的IDを持つ2つの親アイテムがあります。 1つはルートdivで、もう1つはulです。

あなたのパスに沿って、テキストを使用して要素を見つけることができます。以下のいずれかが動作します。

driver.find_element_by_xpath("//div[@id='tabs']//a[text()[contains(.,'Pay Monthly')]]").click() 
driver.find_element_by_xpath("//ul[@id='remove']//a[text()[contains(.,'Pay Monthly')]]").click() 

ただし、項目が静的要素で、ここで目標を検討している場合は、次の方法を提案します。複数の要素を返すときにxpathのインデックスを作成します。

myElement = driver.find_element_by_xpath("//div[@id='tabs']//a[@href='#'][1]") 
myElement.click() 

テキストをキャプチャできます。 waitを入力して、テキストが確実に変更されるようにすることができます。

myText = myElement.text 

これが機能しない場合はお知らせください。

関連する問題