Pythonでコードを書いてから動かしてみると、エラーが出るわけですが、どこがエラーなのかがわかりにくいこともあります。
変数を利用したエラーの探り方についてまとめてみました。
Pythonでできること
Pythonでコードを書くには、IDLEや
Jupiter Notebookなどのツールを使います。
この真っ白なボードで計算をすることもできます。
IDLEでやると、2+3としてEnterを押すと、
5と表示されます。
このように変数を指定して、5万円を税込金額にしてみようかと思います。
その場合にも、変数を使って計算すると、
ちゃんと計算してくれます。なぜ最後に1がつくのかは不明です。
Excelでも使うINTを使ってみると、
端数なしで処理してくれます。
文字列の場合には「'(Shift+7)」で囲って変数を指定すれば、表示してくれます。
文字列を変数どうし「+」でつないで、くっつけることもできます。このあたりはマクロの「&」などと似ています。
このように、左の画面では、計算や読み込み結果を出すことができます。
IDLEでなくても、カタチは違えど同じようなしくみです。たとえば、Jupiter Notebookだと画面は1つで、下に書いていくという感じです。結果は同じです。
どちらかというとこっちのほうが1つずつ確認はしやすくて好みですが、今回はシンプルにIDLEを使ってみます。
エラーは出るもの
前述のしくみをつかって、エラーを絞ることもできます。
事例で考えてみます。
今回の事例はこういうものです。
会計ソフトからCSVファイルを自動で取り出そうというもの。
メールアドレスを入力し、ボタンをクリック
パスワードを入力し、「ログインする」をクリック。
ログイン後、仕訳帳からCSVファイルをエクスポート。
ダウンロードできるストレージの画面に切り替わります。ここまでを自動でやる流れです。ダウンロードするのに何度もクリックしなくてよくなります。
ログインの書き方については、こちらの記事にまとめています。
M1チップMacbook AirでPythonを使ってサイトに自動ログイン。 – GO for IT 〜 税理士 植村 豪 Official Blog
一応、コードはこんな感じです。(載せていますがこれはエラーがでるものです。)
で、動かすとエラーが出るわけです。
ただ、Pythonを始めたばかりだと、これを見てもよくわからないわけです。
じゃあ、これをどうやって絞っていくかです。
ググってみるのも手ですが、きっかけとして前述したIDLEのしくみをつかってみましょう。
認証できているかどうか?
プログラミングはミスが前提です。
Pythonではエラーが出たときは英語です。しかも、超絶わかりにくいです。
ただ、エラーになっているところはある程度絞れます。
まずサイトにアクセスできていれば、そこは問題ないでしょう。
変数を探ってみましょう。この線の赤線の部分です。
IDLEの左の画面に変数を入れてみるのです。
(一度F5キーを押して実行したあとでないとエラーになります。)
たとえば「elem_username」といれてEnterを押してみると、
このように青いフォントで表示されます。ということはちゃんと認識されているということになりますし、動いているはずです。
同様にボタンのクリックの変数「elem_login_btn1」「elem_login_btn2」も大丈夫そうです。
では「elem_login_btn3」はどうか。ここでエラーがでました。
通常に動かしていると出力ボタンをクリックできなかったので、そこに原因があると思ったのですが、実はその手前「elem_login_btn3」の変数がうまく認識できていないことが問題だったんだなということがわかります。
この「elem_login_btn3」を外してみると、ダウンロードする画面まで進むことができました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# seleniumの読み込み from selenium import webdriver from time import sleep #Chromeを起動する from selenium.webdriver.chrome import service as fs chrome_service = fs.Service(executable_path='/Users/gouemura/Dropbox/Python/chromedriver') browser = webdriver.Chrome(service=chrome_service) browser.maximize_window() #マネーフォワードにアクセス url='https://accounting.moneyforward.com/books?cti=WM7J1JlsHDQzsFeOogNxow' browser.get(url) mf_btn='/html/body/main/div/div/div/div/div[2]/div/div[2]/div[1]/section/form/div[2]/div/div[3]/input' #ユーザー名の入力 elem_username=browser.find_element_by_name('mfid_user[email]') elem_username.send_keys('設定のメールアドレス') #ログインボタン1をクリック elem_login_btn1=browser.find_element_by_xpath(mf_btn) elem_login_btn1.click() #パスワードの入力 elem_password=browser.find_element_by_name('mfid_user[password]') elem_password.send_keys('設定のパスワード') #ログインボタン2をクリック elem_login_btn2=browser.find_element_by_xpath(mf_btn) elem_login_btn2.click() #出力ボタンをクリック elem_ex_btn=browser.find_element_by_id('download-btn-menu') elem_ex_btn.click() #CSVボタンをクリック elem_csv_btn=browser.find_element_by_id('js-book-journal-csv-btn') elem_csv_btn.click() |
ということで、プログラミングはエラーがつきもの。
そのエラーがでたときには、原因を絞ることが大事です。
それでも時間はかかりますが、得るものも大きいです。Pythonを始めようという方には参考にしていただければ。
【編集後記】
昨日は午後からオンラインで打合せ。オンラインでやっていて気づいたことがあり、Macのアプリをおすすめしました。
【昨日の1日1新】
※「1日1新」→詳細はコチラ
とある手続き
本人限定受取郵便のネット予約