PythonのFirefox + Selenium:要素htmlをインタラクティブに取得する方法は?

バッジが欲しい

Python + Selenium + Splinter + Firefoxを使用してインタラクティブなWebクローラーを作成しています。

Pythonスクリプトがオプションを提供し、SeleniumがFirefoxを開いて、いくつかの注文を送信します。

今のところ、ユーザーが操作したいWeb要素をPythonスクリプトに知らせる必要があります。

方法私が現在使用しては以下のとおりです。

Webサイト(Firefox)でアイテムを右クリックし、[要素の検査]をクリックしてから、Firefoxインスペクターをクリックし、[HTMLのコピー]をクリックして、スクリプトに手動でフィードすると、続行できるようになります。

しかし、明らかな理由から、このプロセスは完璧にはほど遠いと感じています。

私はjavascriptについて何も知りませんが、他の質問読んだ後、javascriptが実際に解決策になる可能性があると感じました。

Splinterを使用すると、JavaScriptを実行し、戻り値をPythonスクリプトに取り込むことができるため、理論的には次のようになります。

ユーザーがクリックする次の要素のhtmlコードを返すjavascriptコードを実行することは可能でしょうか?したがって、名前付きメソッドは、目的の要素を右クリックするだけでしょうか?


アミーのコメントの明確化:

PythonスクリプトはFirefoxウィンドウを開きますが、その制御は引き続きスクリプトから保持されます。また、splinterを使用すると、javascriptコードを実行して、完了/情報が返されるまで待機できます。つまり、Pythonスクリプトは、所有しているFirefoxウィンドウでクリックまたは右クリックするようにユーザーに求めることができるため、ユーザーがクリックした要素を「キャッチ」するJavaScriptを起動することが目的になります。

javascriptが目的の要素をキャッチするにはそれで十分でしょうか?

irrelephant

これは興味深い質問でした。私の戦略は、Javascriptを使用して、ターゲットとする要素にリスナーを追加することでした。要素の種類を指定しなかったので、リンクを使用しました。ただし、これは簡単に適応できます。

要素がクリックされると、リスナーは指定したIDで新しいページ要素を作成し、value属性を関連情報に設定します。

次に、driver.implicitly_waitを設定したとすると、要素が表示されるのを待つことができます。

driver.execute_script("for(var i = 0; i < document.links.length; i++){document.links[i].onclick = function clicked(){var e = document.createElement('a'); e.setAttribute('id','myUniqueID'); e.setAttribute('value', this); document.getElementsByTagName('body')[0].appendChild(e);};}")

clicked = driver.find_element_by_id('myUniqueID').get_attribute('value')

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Firefox DevToolsで複数行のコマンドラインをアクティブにする方法は?

分類Dev

特定のタイプの要素コンテンツにのみディレクティブを適用する方法

分類Dev

Firefox WebExtension API:アクティブなタブのURLを取得する方法は?

分類Dev

インタラクティブなPythonインタープリターでタブ補完を取得するにはどうすればよいですか?

分類Dev

インタラクティブマップから情報を取得する方法についてのアドバイスはありますか?

分類Dev

aptインストールのインタラクティブモードを有効にする方法は?

分類Dev

IDがない場合にリストアクティブ要素のインデックスを取得する方法

分類Dev

Bash-実行中のコマンドをよりインタラクティブにする方法は?

分類Dev

HTMLページの非アクティブな要素をターゲットにする方法は?

分類Dev

ユーザーから入力を取得し、Pythonのサブプロセス呼び出しによってトリガーされるインタラクティブなコマンドラインプログラムに渡す方法は?

分類Dev

タブを使用したAndroidアクティビティ:アクティブなタブの背後にあるフラグメントインスタンスを取得するにはどうすればよいですか?

分類Dev

Pythonのコマンドラインで「長方形にズーム」をアクティブにする方法は?

分類Dev

angleJsディレクティブのリンク関数内の要素タグの座標を取得する方法

分類Dev

1 つの要素を除いて、ページ全体を非インタラクティブにする

分類Dev

クラスでフィルタリングした後、htmlテーブルの要素を合計するにはどうすればよいですか?

分類Dev

jquerydatepickerの現在アクティブなインスタンスを取得する方法

分類Dev

インタラクティブブローカーAPIから過去の株価データを取得するにはどうすればよいですか?

分類Dev

ディレクティブとコンポーネント内の要素の幅/高さを取得する方法は?

分類Dev

Reachabilityクラスを使用せずに、iPhoneの現在アクティブなネットワークタイプ(wifiまたは3G)を取得する方法

分類Dev

Android Studioの外部ライブラリのアクティビティで戻るボタンを無効にする方法は?

分類Dev

反応ネイティブルーターフラックスで前のシーン名を取得する方法

分類Dev

Emacs Lispでこのフォーム(インタラクティブ(リスト 'インタラクティブ))を理解する方法は?

分類Dev

インタラクティブなbashシェルで前のパラメーターを参照する方法は?

分類Dev

getAttributeを使用して、ネイティブコンテキストでWeb要素のクラス名を取得する

分類Dev

Squeakのモーフにペンでインタラクティブに描画する方法は?

分類Dev

QGraphicsViewにインタラクティブなスプラインのような曲線を実装するための最良の方法は何ですか?

分類Dev

thisポインタjqueryを使用して要素のプロパティと子にアクセスする方法は?

分類Dev

pycharmを使用しているときにpyplotのインタラクティブなプロットを取得する方法

分類Dev

CloudCarouselのフロントインデックスにアクティブクラスを追加する方法は?

Related 関連記事

  1. 1

    Firefox DevToolsで複数行のコマンドラインをアクティブにする方法は?

  2. 2

    特定のタイプの要素コンテンツにのみディレクティブを適用する方法

  3. 3

    Firefox WebExtension API:アクティブなタブのURLを取得する方法は?

  4. 4

    インタラクティブなPythonインタープリターでタブ補完を取得するにはどうすればよいですか?

  5. 5

    インタラクティブマップから情報を取得する方法についてのアドバイスはありますか?

  6. 6

    aptインストールのインタラクティブモードを有効にする方法は?

  7. 7

    IDがない場合にリストアクティブ要素のインデックスを取得する方法

  8. 8

    Bash-実行中のコマンドをよりインタラクティブにする方法は?

  9. 9

    HTMLページの非アクティブな要素をターゲットにする方法は?

  10. 10

    ユーザーから入力を取得し、Pythonのサブプロセス呼び出しによってトリガーされるインタラクティブなコマンドラインプログラムに渡す方法は?

  11. 11

    タブを使用したAndroidアクティビティ:アクティブなタブの背後にあるフラグメントインスタンスを取得するにはどうすればよいですか?

  12. 12

    Pythonのコマンドラインで「長方形にズーム」をアクティブにする方法は?

  13. 13

    angleJsディレクティブのリンク関数内の要素タグの座標を取得する方法

  14. 14

    1 つの要素を除いて、ページ全体を非インタラクティブにする

  15. 15

    クラスでフィルタリングした後、htmlテーブルの要素を合計するにはどうすればよいですか?

  16. 16

    jquerydatepickerの現在アクティブなインスタンスを取得する方法

  17. 17

    インタラクティブブローカーAPIから過去の株価データを取得するにはどうすればよいですか?

  18. 18

    ディレクティブとコンポーネント内の要素の幅/高さを取得する方法は?

  19. 19

    Reachabilityクラスを使用せずに、iPhoneの現在アクティブなネットワークタイプ(wifiまたは3G)を取得する方法

  20. 20

    Android Studioの外部ライブラリのアクティビティで戻るボタンを無効にする方法は?

  21. 21

    反応ネイティブルーターフラックスで前のシーン名を取得する方法

  22. 22

    Emacs Lispでこのフォーム(インタラクティブ(リスト 'インタラクティブ))を理解する方法は?

  23. 23

    インタラクティブなbashシェルで前のパラメーターを参照する方法は?

  24. 24

    getAttributeを使用して、ネイティブコンテキストでWeb要素のクラス名を取得する

  25. 25

    Squeakのモーフにペンでインタラクティブに描画する方法は?

  26. 26

    QGraphicsViewにインタラクティブなスプラインのような曲線を実装するための最良の方法は何ですか?

  27. 27

    thisポインタjqueryを使用して要素のプロパティと子にアクセスする方法は?

  28. 28

    pycharmを使用しているときにpyplotのインタラクティブなプロットを取得する方法

  29. 29

    CloudCarouselのフロントインデックスにアクティブクラスを追加する方法は?

ホットタグ

アーカイブ