Edited at

seleniumとpythonを使用しルーターを自動再起動させる


経緯

自宅で使用しているルーター(WG1200HP3)の調子が悪くなり困り果てたが、再起動したら治ったという事がありました。

そのためルーターが不調になる前に自動で再起動させたいなと。


環境

・Windows10

・Python3.7.4

・selenium

windowsでのpython導入法は他の方がめちゃくちゃ詳しく書いてくださってますので省略

seleniumは

pip install selenium

これだけ


さっそくコード

完全なプログラミング初心者が書いたコードなので不要な部分が混じってるかもしれませんが動作しているのでOKです^^

# coding:utf-8

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.action_chains import ActionChains

if __name__ == "__main__":
options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)

driver.get("http://(ルーターのIPアドレス)/login_main.html")

WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.ID, 'USER_ID')))
driver.find_element_by_id('USER_ID').click()
driver.find_element_by_id('USER_ID').send_keys("admin")
driver.find_element_by_id('PASSWORD').click()
driver.find_element_by_id('PASSWORD').send_keys("xxxxxx(管理画面ログインパス)")
driver.find_element(By.LINK_TEXT, "ログイン").click()
driver.find_element(By.LINK_TEXT, "再起動").click()
driver.find_element(By.LINK_TEXT, "再起動").click()
element = driver.find_element(By.LINK_TEXT, "OK")
actions = ActionChains(driver)
actions.move_to_element(element).perform()
driver.find_element(By.LINK_TEXT, "OK").click()
driver.close()

後はこのコードを流すバッチファイルを作成し、タスクスケジューラに登録するだけ


作成にあたって

ブラウザのアドオン「selinium IDE」を使用し、ルーター再起動させる画面操作を記録。

py形式で出力しましたが、そのままでは動作せず手入れしました。

・chromedriverとchromeのバージョンを揃えなければ動作しない

・バッチファイルが走った後プロンプトが自動終了してくれない←未解決

・そもそもPythonの構文が分からない

・そもそもプログラムを書くのが初めて

元となるコードがあったのにこの程度のコードを完成させるのにすごい時間かかりましたが、これも勉強だと思い粘りました。

最近headlessモードでの実行が可能になったらしいのでheadless化もしようとして少しややこしくなりました。


まとめ

もともと関西弁だったものを無理やり標準語に矯正したので日本語が不自由で読みづらかったと思います。ごめんなさい。

使い道あるか分かりませんが良ければ役立ててください。

それでは