2017-04-04 8 views
0

私はセレンを初めて使っています。私はこのような状況を持っていると私はそれを解決する方法がわからない:Python Selenium:driver.find_elementsを使用して異なる結果を得る

  • 私はdriver.get()に直接リンクを使用する場合、私はW/Oの問題使用して要素を見つけて、数えることができます。
    • element.driver.find_elements_by_xpath();
    • print(len(element))

は、私が正しい印刷結果を得る

  • 私はdriver.get()に代わりのホーム・ページを使用する場合:
    • は、検索ボタンを探します。
    • キーを送信して送信します。
    • print(len(element))
テストが渡され

しかしresult is 0

  • element.driver.find_elements_by_xpath();
  • 。私が間違っていることは何か考えていますか?

    +0

    これはタイミングの問題です。DOMに要素がロードされる前から数えてみようとしています。あなたが初心者であるため、WATIR(Rubyセレンのバインディングのラッパー)を使うことを強くお勧めします。処理された。これは、要素が相互作用する前に4つの条件をチェックします(可視?有効?書き込み可能?)ので、自分で何もする必要はありません。セレンのバインディングを直接使用する場合、これらのチェックは利用できません。セレンの周りのラッパーであるWATIRは、これらのチェックを行い、またあなたに書き込みxpathを回避する関数を与えます。 – RAJ

    答えて

    0

    あなたが検証する前にアクションを待つ必要があります。 Webドライバは、他の検証操作を実行する前に、目的のチェックポイントに達したことを検証するために使用できる「待機条件」を提供します。

    私たちはシステムの待機については言及していませんが、ドライバーが所定の条件が満たされるまでブラウザーをポーリングできる待機条件について説明しています。これらのための多くの条件と多くのオプションがあり、あなたはあなたの目標を達成するためにそれらをかなり普遍的に必要とします。それで私は例を挙げていないのです。

    +0

    あなたの答えをありがとう。私は待っていることを知っている。実際、私は間違った待ち状態を使用していて、結果を得ていませんでした。ちょうど私はEC.presence_of_all_elements_locatedを使用しました。私は結果を得ました! – Vadim

    +0

    うれしかった! –

    関連する問題