1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AutoIT×seleniumでサイト処理自動化

Posted at

毎日あるサイトに行って、csvを取る作業があります。
今回はAutoITとselenium basicで自動化してみます。

##selenium basicをDL
こちらのサイトを参考にDLします。
AutoItでSelenium (basic)を使ってChromeを操作する

##xpathを指定
ec.gif

chromeの検証からcopy xpathで操作したいところを取得。
メゾットFindElementByXPathの引数として入れる。クリック。値を入れる。

ec-part.au3
$obj =$driver.FindElementByXPath('/html/body/form[2]/div[3]/div/div[1]/input[1]')
$obj.click
$obj.sendkeys($ID)

あとはFindElementByXPathの引数が変えてくるだけで
ログインができます。

##全体

ec-all.au3
#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でした。

##最後に
昼休み中に、毎日くじにアクセスしてくじを引きだけのプログラムを作れば
ポイントが勝手に溜まるのでは?と思いました。規約違反になりそうだから辞めときます。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?