プロキシ環境下でSelenium(Chrome)を使う


社内から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とか勉強して、使いこなせるようにならないといけないんだけどね。。。。

あとはデザインパターンの勉強・・・?