エラーメッセージ
ここのサイトを参考にさせていただき、Pythonを使ったWindowsの自動化をしようとしていた時に
“PythonでTCP通信のエラー: [WinError 10061] 対象のコンピューターによって拒否されたため、接続できませんでした。”
というメッセージが表示されました。
環境
このメッセージはPythonからHTTP通信を行う時に発生するメッセージなので色々な条件で起きます。
発生した状況としては、外部への通信というより、ローカルWindowsへのアクセス時に特定のポートを開いて、PythonからHTTP通信からアクセスという流れです。
使用していたものは、
- Windows10
- robotframework-appiumlibrary
- WindowsAppDriver.exe
でした。
Pythonで『robotframework-appiumlibrary』と『WindowsAppDriver.exe』を使ってWindowsを動かすなんてこもと出来るみたいです。
原因と対策
2023/06/22追記
一般的にこのエラーが起きる原因は次が多いです。
- サーバーが動作していない、またはネットワーク上でアクセス可能ではない: 指定したIPアドレスとポート番号でサーバーが実行されているかをまず確認してみてください。
サーバーが正しく動作していてネットワーク上で利用可能な状態にあるかを確認するには、ネットワークユーティリティ(例:ping
、telnet
等)を使うのがいいと思います。 - ファイアウォールによるブロック: サーバーコンピューターまたはクライアントコンピューターのファイアウォールが接続をブロックしている場合もあります。
この場合、該当のファイアウォール設定を確認し、必要であればブロックを解除するなどしてみてください。 - ポートが既に使用中: サーバーが指定したポートを他のプロセスが既に使用中であった場合、新たな接続を受け入れることができません。
ポートが既に使用中でないこと、または適切なポートが開放されていることを確認してみてください。
追記ここまで
僕の起きた環境での対策は実はすごく簡単でした。
ただ、初めてこれをした時は僕はつまづきました。
同じことをしている人がいる場合は参考にしてください。
対処方法はダウンロードした『WindowsAppDriver.exe』を起動して、コマンドプロンプトを閉じない(待ちがってキーを押してプロンプトを閉じがちです)
WindowsAppDriver.exeを起動する前に
netstat -an
を実行するとわかりますが、参考サイトのプログラムを動かすとポート「4723(ポートは任意で変更可能)」が開いていません。
ですが、WindowsAppDriver.exeを起動して
netstat -an
を実行すると、4723ポートが開いている事がわかります。
恐らく初めてWindowsAppDriver.exeを使って自動化するとこの問題に直面すると思います。
参考になれば幸いです。