社内からseleniumを使った自動テストをやろうとしたら、プロキシのユーザー認証で殺された。
それをなんとか突破しようというお話。
※ 社内ルールを破ることを推奨してるわけではないです。。。。ルールの範囲内で適切に行動しましょう。。。
※ この方法を試すときは、自己責任でお願いします。。。
0. 環境
・OS:Windows 10
・社内からインターネットへのアクセスは社内プロキシ経由。
・プロキシの認証はユーザー名とパスワードを入力するやつ。
・プロキシはPACファイルで設定されている。
1. 頑張った結果
結論から言うと、プロキシを突破して自動テストができました。
使ったのは、Proxomitron。
こいつをインストールしていろいろ設定すると、プロキシ認証を肩代わりしてくれる。んで、ブラウザにアクセスしても認証ダイアログが出なくなる。
2. プロクソのインストール
以下のサイトが日本語で情報をまとめてくれてるっぽい。
かなり古いので、使っててなんか起こっても正直文句言えないなぁ。。。。
でも気にせずダウンロードして、インストール。
デフォルト設定のままインストールしていく。デスクトップにショートカットができる。
Windows 10でも動作するようだ。
3. プロクソの設定
まず「Proxy」をクリックして、プロキシのアドレスとポート番号を入力する。「Add」は選択しなくてOKです。
右クリックして「Advanced Proxy setting」的なやつを選択。
「Send username and password to proxy」にチェックを入れて、プロキシ認証で使用するユーザー名とパスワードを入力。
次に、最初の画面に戻って「Config」を選択。「HTTP」のタブを選択して、ポート番号に適当な番号を選択。(マジでテキトーでいい。テキトーに30000番台とかでいいんじゃないですかね)
※ ここで指定したポート番号を、IEのプロキシの番号に使用します。
最後に、最初の画面で「Use Remote Proxy」にチェックを入れます。
これでプロクソの設定はOK。
ちなみに、プロキシのアドレスはChromeとかにアクセスしたときに出る「XXXが認証を要求しています」的なメッセージのうち、アドレスっぽいものを取り出して指定したらうまくいった。。。。
ここらへんはよくわかんない。。。。たまたまうまくいったとしかいえない。。。。僕プロキシってよく知らないし。。。
あと、Testはいまいち信用できないので別にやらなくていいと思います。僕の環境では、プロクソのテストは失敗してたけど、自動テストは普通に動作しました。
4. IEの設定
IEのブラウザを立ち上げて、右上のほうにある歯車のアイコンを選択して
「インターネットオプション」→「接続」→ 「LANの設定」→ 「LANにプロキシサーバーを使用する」にチェック。
アドレスは「localhost」、ポートはさっきプロクソで設定した番号。
※ 自動構成のチェックは、たぶん外したほうがいいかと。。。。よくわからないけど、僕は外した。。。
これでOKですね。
Chromeでテキトーなページにアクセスして、認証ダイアログが出なかったらOKです。
#5. 油断してはいけない
Windowsのファイアウォールで動作が妨害されることがあります。
もし動かなかったら、プロクソをファイアウォールで許可してあげてください・・・・
※ すでに許可している場合はもうわかりません。ごめんなさい。
#6. 最後に
認証突破したくていろんなサイト探したけど、あんまりピンとくるものが載ってなかったというか、試してもうまくいかないのがほとんどでしたね。
特に、コードでプロキシの設定をする類のやつ。。。。
ぼく、C#なんだけど、Pythonとかばかりで全然わからないし、PythonのコードをC#に直して実行してみてもうまくいかないし、それはそもそもC#に直せてないのか、コード自体が動かないのかも検証できないし。。。。
でも、これからはプロキシ環境下でも自由にテスト自動化が試せそうで、嬉しいです。
まあXPathとか勉強して、使いこなせるようにならないといけないんだけどね。。。。
あとはデザインパターンの勉強・・・?