毎日あるサイトに行って、csvを取る作業があります。
今回はAutoITとselenium basicで自動化してみます。
##selenium basicをDL
こちらのサイトを参考にDLします。
AutoItでSelenium (basic)を使ってChromeを操作する
chromeの検証からcopy xpathで操作したいところを取得。
メゾットFindElementByXPathの引数として入れる。クリック。値を入れる。
$obj =$driver.FindElementByXPath('/html/body/form[2]/div[3]/div/div[1]/input[1]')
$obj.click
$obj.sendkeys($ID)
あとはFindElementByXPathの引数が変えてくるだけで
ログインができます。
##全体
#include "my_password.au3"
$driver = ObjCreate("Selenium.ChromeDriver")
$driver.Get("https://admin.ec-tencho.jp/login_form.html")
sleep(3000)
#IDを入れる
$obj =$driver.FindElementByXPath('/html/body/form[2]/div[3]/div/div[1]/input[1]')
$obj.click
$obj.sendkeys($ID)
#パスワードを入れる
$obj =$driver.FindElementByXPath('//*[@id="password"]')
$obj.click
$obj.sendkeys($pwd)
#ログインボタンを押す
$obj =$driver.FindElementByXPath('//*[@id="mypage_cont"]/div/div[2]/a/p')
$obj.click
sleep(3000)
#在庫ページに移動する
$driver.Get("https://admin.ec-tencho.jp/product/stock_info.html")
sleep(3000)
#在庫ボタンを押す
$obj =$driver.FindElementByXPath('//*[@id="quantityDownload"]')
$obj.click
#範囲指定 ただのオブジェクト
$obj =$driver.FindElementByXPath('//*[@id="excel_range"]')
#selectと認知させて、selectのメゾットを使う
$obj.Asselect.SelectByValue("004")
sleep(2000)
#実行ボタンを押す
$obj =$driver.FindElementByXPath('/html/body/div[9]/div[11]/div/button[1]')
$obj.click
sleep(45000)
パスワードの変数だけが入ったmy_password.au3に読み込ませます。
パスワードが変わったら、このファイル1つだけ編集すればOK
あとは先ほどの、FindElementXPathとclickを繰り返すだけ。
途中、select要素が出てくるので、selectとして認識させています。
Asselect.SelectByValue("004")の所です。
できたファイルを右クリック→コンパイルしてau3→exeに変換。
タスクスケジューラで設定すれば自動化できるはず!
##困ったこと
自宅ではうまく行くけど、会社では2点つまずきました。
・突然、au3ファイルが消える
・タスクスケジューラで起動させると遅い。
###突然、au3ファイルが消える
avastセキュリティソフトが、au3をウイルスとして処理していました。
au3が入ってるフォルダはセキュリティ外にすればOKでした。
###タスクスケジューラで起動させると遅い。
検索すると、タスクスケジューラで起動させたプログラムは
デフォルトでは優先順位が低くく設定されているため。
タスクスケジューラから起動したプログラムが重いのは優先度が低いからかも
こちらのサイトに参考に
priorityを7から6に変更して取り込み直せばOKでした。
##最後に
昼休み中に、毎日くじにアクセスしてくじを引きだけのプログラムを作れば
ポイントが勝手に溜まるのでは?と思いました。規約違反になりそうだから辞めときます。