Python selenium - Chrome Driver
Python の selenium で RPA を実装するにあたり、ChromeDriver というドライバをインストールして Chrome ブラウザをプログラムで動かすためのドライバをインストールします。
1.
Chrome Driver のダウンロードサイトへ行き、 Chrome のバージョンと一致するインストーラを落とします。
私の Chrome は version 96 でした。
2.
ダウンロードしたファイルを解凍したら、 /usr/local/bin へ移動
3.
ChromDriver を起動すると下記のエラーが出ました。
4.
ぐぐったところ下記の処置で解決するらしく早速試す。
5.
今回は成功したようです。
辞書サイトの自動立ち上げ
今回は Django をお休みして自動化についてです。
【やりたいこと】
・CSVファイルに英単語を10個格納します。
・for で回して 「辞書サイトURL+英単語」に chrome でアクセスします。
・10個タブが立ち上がります。
利用者(私)がほしいものはそこまでです。
辞書で個々の英単語のページを読んで、内容を元々のリストに手動でコピペしていきます。
全部自動化したいのですが、作業を簡易化するためにいったん上記で運用を開始します。
csv と webbrower をインポートして、上記を実装するだけです。
次は selenium のインストールや設定をやっていきます。
Migration のエラー対応内容
[動かして学ぶ | Python Django 入門 (Chapter 10)]
No migration to apply が出て、何が起こったのか不明だったため、メンターの方と確認して、下記のように対応しました。
1 ) settings_dev にsettings_commonの内容を追加
まず開発環境で作業して、その後 AWS にあげるところまでを書籍でやっているのですが、ひとまず settings_dev を読み込む設定をしているので Databaseの設定が書かれていないことが原因と判断しました。
settings_common.py 作成時は settingsの内容をコピーしていたけども、settings_dev.pyは書籍の更新内容のみ記載していた。settings_common の import が機能していなかったのだから自力で検証できた内容だったかもしれない。
(ひとりでぐぐったときにはっきり settings を明示的に参照させてから切り分けろと書いてあったのにスルーしていた。。)
dev で common を import しているのですが、 PyCharm の画面上では反応がなく(色が変わらない)読み込んでいるのか不明です。
2) showmigrations の設定指定の方法を知らなかった
対処方法:
開発用設定(Database設定含むsettings_commonの内容を追加済み)を明示的に指定してターミナルで実行したところ、正常な結果が出力された。(3回目のマイグレーションを行ったので書籍とは異なり、0003 の更新内容が存在する)
実行コマンド:
python manage.py showmigrations --settings private_diary.settings_dev
--settings でsettingsを指定できる。manage.pyのあるところから相対パスで private_diaryフォルダ下に settings_dev.pyがある。ここで private_diary/ と書きたくなるが python のルールでは private_diary. と記述する。(.py は不要)
結果:
account
[X] 0001_initial
[X] 0002_email_max_length
[X] 0003_auto_20211107_0118
accounts
[X] 0001_initial
admin
[X] 0001_initial
[X] 0002_logentry_remove_auto_add
[X] 0003_logentry_add_action_flag_choices
auth
[X] 0001_initial
[X] 0002_alter_permission_name_max_length
[X] 0003_alter_user_email_max_length
[X] 0004_alter_user_username_opts
[X] 0005_alter_user_last_login_null
[X] 0006_require_contenttypes_0002
[X] 0007_alter_validators_add_error_messages
[X] 0008_alter_user_username_max_length
[X] 0009_alter_user_last_name_max_length
[X] 0010_alter_group_name_max_length
[X] 0011_update_proxy_permissions
[X] 0012_alter_user_first_name_max_length
contenttypes
[X] 0001_initial
[X] 0002_remove_content_type_name
diary
(no migrations)
sessions
[X] 0001_initial
sites
[X] 0001_initial
[X] 0002_alter_domain_unique
No migrations to apply 発生
1) PyCharm から migrate を実行すると No migrations to apply が発生する。
2) Macのターミナルから showmigrations を実行してみた。
python manage.py showmigrations
ということで、DB設定が不適切ということで怒られました。
settings.DATABASES is improperly configured. Please supply the ENGINE value.
settings.py(本件ではsettings_common.py)でDBの設定は下記のとおり。手詰まり。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'private_diary',
'USER': os.environ.get('DB_USER'),
'PASSWORD': os.environ.get('DB_PASSWORD'),
'HOST': 'localhost',
'PORT': '',
}
}
3) エラーメッセージの指示に従って、makemigrations をPyCharm で実行してみる。
OKが出たが、書籍の内容とは異なる。 (0001, 0002 が終わって 0003まで進んだってこと?)
正常性確認ってどうすればよいのだろう。
4) DB
エラーが出ているのだから DBには反映されていない??
Django 言語設定
settings.py (今回はカスタマイズした settings_common.py) の LANGUAGE_CODE で言語設定を変更し忘れていたので Django-allauth を使用した認証の箇所が英語のままでした。
日本語設定してブラウザから再読み込みする
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'ja'
日本語 'ja'での正常動作を確認できたので、試しに韓国語にもしてみました。
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'ko-kr'
実際多言語対応するとなるとHTML直書きしている箇所とかは別に対応することになるので、そのあたりは別途調べたい。
PyCharm と マークアップ入力時のトラブル
PyCharm の[Problem]でここに xxxx is not allowed here みたいな黄色エラーが出る場合は
単純にタグの閉じ忘れみたいなことが多いので、そのあたりのパターンを経験できたのはよかったと思う。
HTML のタグ (divとか)閉じ忘れ対策として PyCharm の [Problem] でチェック、
block の書き方が不完全な場合はエラーはいてくれるので実直に間違っている箇所を探すようにします。
【その他】
・unknown html tag だとまんま html の間違いでわかりやすいけど、
invalid block tag と出ていて href に url が抜けていたのが原因などあってクセがある。
・あと、大きなモニターがあれば防げたケアレスミスも多いのでモニター購入も検討したい。
・¥ を使ってそのままの箇所もあった。早めに英語キーボードに切り替えたい。