てんこ製作

Tenco Works

会社でPython+Seleniumセットアップ

いろいろ制限が多い会社のデスクトップ環境で、Web画面を使った業務を自動化するリクエストをもらいました。今回は初めてseleniumに手を出してみたお話です。

前提

会社のデスクトップ環境はセキュリティーが大事とか、限りあるストレージ資源を大切にとかでいろいろ制限があります。

  • クラウドのWindowsデスクトップ環境
  • 自分を含め一般社員にはWindows管理者権限無し
  • システムポリシーでインストーラー起動制限=ユーザーによるソフト追加インストール不可
  • ユーザー環境変数は変更できるけどいつの間に勝手に初期化されるケースあり
  • WindowsUpdateは管理者側で実施するが、タイミングは結構遅く最新パッチではない

要件

  • 社内のWebシステムに情報を登録する業務を自動化したい
  • 該当の社内WebシステムはまだEdge対応してなくてIEモードじゃないと正常動作しない
  • 自動化したツールは社内の他の複数の部署にいる業務担当に配布して使ってもらう
  • 配布するツールはインストーラーなしの単体で動作させるようにしたい
  • 配布するファイル数はできるだけ少なくしたい

目標

Python勉強中だったのでPythonは使うとして、Pythonでブラウザ操作にはSeleniumが超有名そうなのでSeleniumを使おうと思います。

とりあえず開発できて最低限動くところまでが目標。

  • Windows 10 Pro 22H2
  • Python 3.10.8

手順

Python

インストーラーが使えない環境なので、embedded版のPythonを使います。Pythonの公式サイトの「Download」→「Windows」をクリック。

www.python.org

この記事を書いている時点で最新のPythonのバージョンは3.11.0ですが、3.10や3.9などもダウンロードできるみたい。

どのバージョンでも今回入手するのは「Windows embeddable package」になります。.zipファイルがダウンロードされるはずなので、適当なディレクトリに入れて解凍します。

てんこは今回C:¥Users¥ユーザ名¥AppData¥Local¥Programs¥pythonに展開しました。インストーラーでインストールしたときの場所に近い?

配置が終わったら、環境変数PATHにpythonのディレクトリを追加します。環境変数は設定→システム→詳細情報→システムの詳細設定→環境変数で、ユーザー環境変数のなかのPathで設定できます。

pip

Seleniumはpip経由でインストールすることになるので、pipも必要です。

インストーラー版だとPythonにpipも同梱されてるようですが、embedded版だと別途インストール作業が必要です。

まずはPythonをインストールしたディレクトリの中にあるpython310._pthというファイルを開いて編集します。(310の部分はバージョン番号。今回は3.10を使ってるので310です。)

#import site

import siteと記述されている行がコメントアウトされている状態になってますので、このコメントアウトを外して有効にしておきます。

import site

次に、pipをインストールするスクリプトをWebから入手します。

https://bootstrap.pypa.io/pip/get-pip.py

このリンクはスクリプトそのものへのリンクです。get-pip.pyという名前でローカルPC上の適当な場所に保存します。

保存ができたら、コマンドラインを開いてget-pip.pyを実行します。

C:\Users\WDAGUtilityAccount\Documents>python get-pip.py
Collecting pip
  Downloading pip-22.3.1-py3-none-any.whl (2.1 MB)
     ---------------------------------------- 2.1/2.1 MB 8.2 MB/s eta 0:00:00
Collecting setuptools
  Downloading setuptools-65.6.3-py3-none-any.whl (1.2 MB)
     ---------------------------------------- 1.2/1.2 MB 8.7 MB/s eta 0:00:00
Collecting wheel
  Downloading wheel-0.38.4-py3-none-any.whl (36 kB)
Installing collected packages: wheel, setuptools, pip
  WARNING: The script wheel.exe is installed in 'C:\Users\WDAGUtilityAccount\Documents\python-3.10.8\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The scripts pip.exe, pip3.10.exe and pip3.exe are installed in 'C:\Users\WDAGUtilityAccount\Documents\python-3.10.8\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-22.3.1 setuptools-65.6.3 wheel-0.38.4

C:\Users\WDAGUtilityAccount\Documents>

ちなみに上の例ではサンドボックスで実行したのでユーザー名がWDAGUtilityAccountになってます。

正常終了したらpipはインストールできているはず。途中にWARNINGが出ていて、「pipをインストールしたディレクトリにPATHが通ってませんよ」的なことを言われます。

pipはPythonをインストールしたディレクトリ配下のScriptsに入ってますので、ここにPATHを通します。環境変数への設定は前述と同じ手順。

起動済みのコマンドラインには環境変数は反映されないので、コマンドラインの再起動も忘れずに。

venvは省略

インストーラー版のPythonにはvenvが同梱されてるんですが、なんかembedded版には入ってないんですよね。なので入れておきたいんですが、どこからとってくるのかとか調べきれておらずまた後日チャレンジします。

selenium

seleniumはpipでインストールできます。コマンドラインにpip install seleniumを投入するだけ。

C:\Users\WDAGUtilityAccount>pip install selenium
Collecting selenium
  Downloading selenium-4.7.2-py3-none-any.whl (6.3 MB)
     ---------------------------------------- 6.3/6.3 MB 8.1 MB/s eta 0:00:00
Collecting certifi>=2021.10.8
  Downloading certifi-2022.12.7-py3-none-any.whl (155 kB)
     ---------------------------------------- 155.3/155.3 kB 4.7 MB/s eta 0:00:00
Collecting trio~=0.17
  Downloading trio-0.22.0-py3-none-any.whl (384 kB)
     ---------------------------------------- 384.9/384.9 kB 12.1 MB/s eta 0:00:00
Collecting trio-websocket~=0.9
  Downloading trio_websocket-0.9.2-py3-none-any.whl (16 kB)
Collecting urllib3[socks]~=1.26
  Downloading urllib3-1.26.13-py2.py3-none-any.whl (140 kB)
     ---------------------------------------- 140.6/140.6 kB 8.1 MB/s eta 0:00:00
Collecting cffi>=1.14
  Downloading cffi-1.15.1-cp310-cp310-win_amd64.whl (179 kB)
     ---------------------------------------- 179.1/179.1 kB 5.4 MB/s eta 0:00:00
Collecting idna
  Downloading idna-3.4-py3-none-any.whl (61 kB)
     ---------------------------------------- 61.5/61.5 kB ? eta 0:00:00
Collecting sniffio
  Downloading sniffio-1.3.0-py3-none-any.whl (10 kB)
Collecting sortedcontainers
  Downloading sortedcontainers-2.4.0-py2.py3-none-any.whl (29 kB)
Collecting async-generator>=1.9
  Downloading async_generator-1.10-py3-none-any.whl (18 kB)
Collecting attrs>=19.2.0
  Downloading attrs-22.1.0-py2.py3-none-any.whl (58 kB)
     ---------------------------------------- 58.8/58.8 kB 3.0 MB/s eta 0:00:00
Collecting exceptiongroup>=1.0.0rc9
  Downloading exceptiongroup-1.0.4-py3-none-any.whl (14 kB)
Collecting outcome
  Downloading outcome-1.2.0-py2.py3-none-any.whl (9.7 kB)
Collecting wsproto>=0.14
  Downloading wsproto-1.2.0-py3-none-any.whl (24 kB)
Collecting PySocks!=1.5.7,<2.0,>=1.5.6
  Downloading PySocks-1.7.1-py3-none-any.whl (16 kB)
Collecting pycparser
  Downloading pycparser-2.21-py2.py3-none-any.whl (118 kB)
     ---------------------------------------- 118.7/118.7 kB 3.4 MB/s eta 0:00:00
Collecting h11<1,>=0.9.0
  Downloading h11-0.14.0-py3-none-any.whl (58 kB)
     ---------------------------------------- 58.3/58.3 kB 3.0 MB/s eta 0:00:00
Installing collected packages: sortedcontainers, urllib3, sniffio, PySocks, pycparser, idna, h11, exceptiongroup, certifi, attrs, async-generator, wsproto, outcome, cffi, trio, trio-websocket, selenium
Successfully installed PySocks-1.7.1 async-generator-1.10 attrs-22.1.0 certifi-2022.12.7 cffi-1.15.1 exceptiongroup-1.0.4 h11-0.14.0 idna-3.4 outcome-1.2.0 pycparser-2.21 selenium-4.7.2 sniffio-1.3.0 sortedcontainers-2.4.0 trio-0.22.0 trio-websocket-0.9.2 urllib3-1.26.13 wsproto-1.2.0

C:\Users\WDAGUtilityAccount>

今回はここまでにして、別の機会にseleniumを使っていろいろブラウザ操作してみようと思います。