ブロガー(によるこの記事SunboyL:)の元には、ソースを明記してください再現https://www.cnblogs.com/SunboyL/p/11563345.htmlを
そのため、作業上の理由により、データがオンラインXLSファイルに入力する必要があります。データの量が多すぎるので、だけでなく、将来的には、時間に時間を費やす必要は、Ctrl + Cは、Ctrlキー+ Vは、恒久的な解決策ではありません。そのため、アイデアの開始は、サイトへのデータ入力のxlsファイル用のツールを作成します。
私はHTMLを理解し始めたこの時間の間、JavaScriptは、多くのものはほんの少しの予備知識があります。、さらに詳細に書くあなたが私に似ている場合は、記事が有用であると考えています。古い鳥の場合は、〜それをスキップ
xlsファイルの書き込みは一部省略します。
フォームに必要事項を記入実現するには、次のものが必要です。
セレンライブラリの1.python。セレンを理解するシステム、に行く:http://www.testclass.net/selenium_python
2.Chromeブラウザは、あなたはまた、他のブラウザを使用することができ、リファレンス:http://www.testclass.net/selenium_python/selenium3-browser-driver
3. Googleとブラウザのバージョン対応chromedriver、ダウンロード:https://sites.google.com/a/chromium.org/chromedriver/home、使用して開いていない淘宝網の代替アドレス:http://npm.taobao .ORG /ミラー/ chromedriver /
まず、chromedriverを設定
1)最初に、Chromeブラウザ自体のバージョン番号を確認chromedriverダウンロードサイト、独自のマッチングchromedriverバージョンをダウンロードしてChromeブラウザを見つけること。詳細な手順に示されているように私は、Win32バージョンをダウンロード:
2)図のステップで詳細に示され、抽出しchromedriver.exe Chromeブラウザのディレクトリにコピーする必要があります。
3)便宜上、我々はまた、システムのPATH環境変数にChromeを追加することができます。
これは、設定上のchromedriverはそれを終えました。
二、Pythonはセレンライブラリをインストール
次のコマンドを使用してインストールを完了するには:
PIP3セレンをインストール
図:
第三に、テストセレンライブラリ
Baiduのページを開き、「cnblogs」(フォローアップのidのソースコードを説明するために)を検索するための簡単な関数を達成するために、次のコードを編集します。
インポートOS からセレンインポートwebdriverを DEF 試験(): ドライバ = webdriver.Chrome(" chromedriver.exe ") #chromedriver経路 driver.get(R&LT " http://www.baidu.com " ) driver.find_element_by_id(「キロワット").send_keys(" cnblogs ") #を入力cnblogsは (driver.find_element_by_id " SU ").click() #をクリックして" Baiduの、「検索 IF __name__ ==" __main__ " : 試験() os.system(" 休止")
テストが完了し、その後、我々は使用することができます。
四、セレンを使用
セレンは、ID、名前、クラス名、方法のXPathの品種によるようなページ要素の配置のいくつかの方法を、提供します。詳細については、以下を参照してください。http://www.testclass.net/selenium_python/find-element/、ここでは繰り返しません。
これは、私たちは、ほぼすべてのあなたは、最後のステップは、当社のウェブサイトの特定の要素を見つけるために、充填の目標を達成するためにあるフォームに記入の良い仕事をするために準備していました。
V.位置決めページ要素
Chromeデベロッパーツールは非常にトラバーサル位置決めページ要素の方法を提供してくれます。私たちは、Baiduのホーム・ページのテキスト入力ボックスと「Baiduのそれ」の例として、ボタンを探します。
1.開発者ツールを開くには、F12キーを押しをChromeブラウザを開きます。「要素」セクションにクリックして、我々は、全ページのHTMLコードを見ることができます。図:
2.図のようにページ要素を見つけるために小さなボタンの開発ツール左上隅をクリックして、我々は要素IDを対応する入力ボックスを見つけるために、テキスト入力ボックスを見つけ、もちろん、我々はまた、他の値によって配置することができます。
次はBaiduのボタンを探します。
ここから私たちが見ることができ、IDのテキスト入力ボックスが「KW」で、Baiduは、IDボタンがsuコマンドで、上記の情報を、私たちは第三位のコードポイントを書くことができます。
実際に遭遇した問題の第六に、いくつか:バルク充填を扱うときに例外がスローされます:selenium.common.exceptions。ElementClickInterceptedException:メッセージ:クリックして、要素を傍受
充填容量データのために、私たちは多くの場合、塗りつぶし面積を大きくするボタンをクリックする必要があります。以下の例では、
Chromeデベロッパーツールを通じ、我々はボタン要素を探し、3つのボタンが同じクラス、クラス=「addbutton」に属します。
その後、私たちはバーコードを実装するために開始し、我々は要素row_elementを見つけるために流用していると仮定します。
1)初版コード
私たちは、第二addbuttonボタンにrow_elementによって位置決めし、次のコードをクリックしてください:
上記のように、我々は自動的に領域を埋めるの行を追加する論理を実現しました。
しかし、私はバッチをこのように充填する際には、なかった、フォームに記入する方法が例外をスローします。
selenium.common.exceptions。ElementClickInterceptedException:メッセージ:要素クリックインターセプト:要素の<input type = "ボタン"のtabindex = " - 1"クラス= "addbutton"値= "+↓"のonclick = "postInsert(11)">点(737ではないクリック可能であり、 833)。その他の要素は、クリックを受け取ることになる。<IFRAME FRAMEBORDER = "0"名前= "hiddenwin" ID = "hiddenwin"クラス= "debugwin"> </ iframe>の
(セッション情報:クロム= 77.0.3865.90)
おそらくそれは、他の要素が傍受されていることを意味します。あなただけの新しいアプローチを見つけることができます。
情報検索のすべての種類、結果は、コードの第二版で登場しました。
2)第2版コード
示すようにJavaScriptのスクリプトの実行を使用して、いくつかのわずかな修正を加えたコードの初版:
プリント(" 添加一条填表区... " ) add_buttons = row_element.find_elements_by_class_name(' addbutton ' ) #1 add_buttons [1] .click() driver.execute_script(" 引数[0] .click()"、add_buttons [1 ])
修正後は、エラーが起きたばかりのことはありません -
3)第3版コード、さらなる改善
JavaScriptとHTLMを持つ独自のより身近で、そして再び自分自身を見つけるに見えたビッグベンドの周りに、実際には、達成するための簡単な方法があります。
オリジナルロジックの著者は、ライン要素に様々な手段によって位置決めされ、次いで、(特定のボタンを標的とし、[OK]をクリック)を達成します。
次のようにしかし、我々は、HTLMソースを振り返ります:
私たちは、実際には、ことがわかりますクリックイベントがpostInsert()関数に対応しています!
私たちは、直接driver.execute_script()postInsert()関数は呼ばない、することができ、完全に要素を配置するために必要に位置し、ああ、ありません!必要があります!ポジショニング!ああ!ああ!
postInsert()関数は、最初の数行の後に挿入された新しい行を表す整数値を受け付けます。コードに若干の修正は、コードの第3版、取得する行が存在します。
ツールが終了し、この時点で、私これらの日は0から基本的なHTMLを理解することです、JavaScriptが始まった、理解を深めやツールを書くために、ピットに実行するステップバイステップで、番号は、それらをカウントされません。しかし、また偉大な収穫は、それを燃料に続け!