2017-06-30 12 views
0

私は、ページがの完全ながロードされた後にのみデータを取得しようとしています。ファビコンが待ってからサイトのアイコンに変わった後も同様です。私は私の3つのテーブルを与えるからデータを取得しようとしていたところから、ソース、これらのテーブルは、同じHTML同じのXPathので、私が使用して試してみました:Python:Selenium Webdriver待機EC

WebDriverWait(driver,timeout).until(EC.presence_of_element_located((By.CLASS_NAME, "someclass_name"))) 

をしかし、この条件は、すぐにどちらかのテーブルがロードされるので、渡します私のスクリプトは、それらのテーブルの他の2つの配列が 'None'であることを宣言します。また、別のページがロードされるとすぐに渡すので、私は 'EC.staleness_of'を使ってみました。ページが更新されるとすぐに表示されます。私は、すべての要素がロードされた後でのみ条件が成立する方法を望んでおり、特定の要素が配置されているわけではありません。 ありがとう!

答えて

1

あなたはすべての3つのテーブルがDOM

WebDriverWait(driver,timeout).until(lambda: len(driver.find_elements_by_class_name("someclass_name")) == 3) 
+0

グレートに表示されるまで待つように、コードの下に試すことができます!もっと一般的なケースはどうですか?例えば;ページは実際には最大で3つのテーブルに戻ります。要素が動的な場合は、最も良い方法は何ですか? – malloc

+0

@Andersson Windows上のPython 3.6.1でも 'lambda'がサポートされていますか? 'lambda'の使い方と実装に関するいくつかの文書を私に紹介してください。ありがとう – DebanjanB

+0

@DebanjanB、はい、匿名関数は3.6.1バージョンでサポートされています。あなたはいくつかの説明を得ることができます[ここ](https://docs.python.org/3/tutorial/controlflow.html#lambda-expressions) – Andersson

関連する問題