前回の記事PythonでChromeを操作する方法1でPythonを使ってグーグルのブラウザ「Chrome」を起動させる方法と閉じる方法を記しました。
この方法で開いたchromeはPythonでフォームに文字を入力したりボタンを押したりする事ができます。
そこで今回は開いたChromeのフォームに文字を入力したりボタンを押したりする方法を記してみます。
Pythonによるchromeの操作
[Python02]
テスト用のフォームです。
以下のサンプルを実行すると、ここが操作されます。
import time from selenium import webdriver website = 'https://toolmania.info/post-9708/' #================================================= #chromeを開く chro = webdriver.Chrome() chro.get(website) if(chro.current_url==website): time.sleep(3) #テキスト入力 input = chro.find_element_by_id('inputtext') input.send_keys('テスト用テキスト') print("テキスト入力") time.sleep(3) #ファイルの選択 input = chro.find_element_by_id('fileselect') input.send_keys("c:\\") print("ファイルの選択") time.sleep(3) #チェックボックスをON/OFF input = chro.find_element_by_id('checkbox1') input.click() #要素を名前でも取得 input = chro.find_element_by_name('test2') input.click() print("チェックボックスをON/OFF") time.sleep(3) #ボタンを押す input = chro.find_element_by_id('inputbutton') input.submit() print("ボタンを押す") time.sleep(10) chro.quit()
一定時間待つ
import time
time.sleep(3)
この関数を使うにはtimeというモジュールをインポートします。
time.sleep(秒数)
任意の秒数待ちます。1で1秒となっています。
現在開いているサイトのURLを確認する方法
if(chro.current_url==website):
if(webdriverオブジェクト.current_url==“確認するURL”):
.current_urlに現在開いているサイトのURLが入っているのでif文で比較判定する事ができます。
フォームのパーツをIDから取得する方法
input = chro.find_element_by_id(‘inputtext’)
エレメント = webdriverオブジェクト.find_element_by_id(フォームの要素のID)
htmlの中のフォームのパーツから指定するidを持つ物を取得します。
フォームのパーツを名前から取得する方法
input = chro.find_element_by_id(‘inputtext’)
エレメント = webdriverオブジェクト.find_element_by_name(フォームの要素の名前)
htmlの中のフォームのパーツから指定する名前を持つ物を取得します。
同じ名前が複数ある場合は先にある方が優先して取得されます。
テキストボックスに文字を入力する方法
input.send_keys(‘テスト用テキスト’)
エレメント.send_keys(入力するテキスト)
エレメントに入力したい文字を入力します。
ファイルを開くダイアログでファイルを選択させる方法
input.send_keys(“c:\\”)
エレメント.send_keys(ファイル・ディレクトリ名)
ダイアログを開かずにファイル・ディレクトリ名を入力します。
ただし存在しないファイル・ディレクトリを指定するとエラーとなります。
サンプルではc:\\を指定していますが、cドライブが無い場合は別のファイルなどを指定してみてください。
チェックボックスをON/OFFさせる方法
input.click()
エレメント.click()
ONになっているチェックボックスはOFFにさせ、OFFになっているチェックボックスはONにさせます。
つまりチェックボックスをクリックしたのと同じ効果です。
ボタンを押す方法
input = chro.find_element_by_id(‘inputbutton’)
エレメント.submit()
フォーム内のボタンを押したのと同じ効果です。
このサンプルでは「テキスト入力用(IDはinputtext)→」に入力した文字をパラメータとし「ボタンを押すとテキスト入力用に入力した物が入る→」に表示されるようしています。
まとめ
この機能を使えばchromeの入力などの操作が自動で出来るので繰り返し作業の時間短縮化が可能になります。
例えばレンタルしているサーバーを別の所に変えた場合のWordpressの引っ越し作業で分割したバックアップファイルを自動でインポートし続けるなど、これを応用すれば可能です。
Pythonを使うならオススメ機能です。