6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ChromeDriver(EdgeDriver)のVer.128からデフォルトポート9515がランダムに変更されました。

Last updated at Posted at 2024-09-08

はじめに

TinySeleniumVBA (ExcelでWebスクレイピングするツール) を使用しているユーザーから環境を変更したら動作しなくなったとのコメントがありました。

他にも AutoIt (Windows用プログラムのGUI自動操作機能)でも問題が発生しているようです。

【2024/12/28追記】
他にも、Laravel の旧バージョンでも問題が発生しているようです。

原因

2024/08/22のChromeDriver(EdgeDriver)のVer.128からデフォルトポート9515がランダムに変更されたことによるものです。
TinySeleniumVBA では固定ポート指定をしていないため、デフォルトポート9515を前提として動作するようになっていたため、ポート不一致でエラーになっていました。

Fix TCP port race in ChromeDriver

Before this commit ChromeDriver used the default port number 9515 if the
server port was not provided explicitly via the command line. If user
needed to create several ChromeDriver instances the port number had to
be provided explicitly. This created a problem: user had to find a free
port, pass it to ChromeDriver and hope that the port won't be stolen by
another process in between.
This commit enables ChromeDriver to search for the available server port
if it was not specified explicitly or if the port argument was specified
as 0 (zero). This solves the problem of TCP port race.
https://chromium.googlesource.com/chromium/src/+/6f33d75f071e322c4a3e49b0a4ac2022e5b6cada

ChromeDriverのTCPポートレースを修正
今回のコミット以前は、ChromeDriverはサーバーポートがコマンドラインで明示的に提供されない場合、デフォルトのポート番号9515を使用していました。
複数のChromeDriverインスタンスを作成する必要がある場合、ポート番号を明示的に指定する必要がありました。
このため、ユーザーは空いているポートを探してChromeDriverに渡し、その間に他のプロセスにポートが盗まれないことを祈らなければならないという問題があった。
このコミットにより、明示的に指定されていない場合、またはポート引数に0(ゼロ)が指定されている場合に、ChromeDriverが利用可能なサーバーポートを検索できるようになった。
これにより、TCPポート競合の問題が解決される。

暫定対応

ポート番号を明示的に指定するよう「" --port=9515"」を追加

WebDriver.cls
' Launch Edge Driver
Public Sub Edge(ByVal driverPath As String, Optional ByVal driverUrl As String = "http://localhost:9515")
    start driverPath & " --port=9515", driverUrl, "MicrosoftEdge"
End Sub

' Launch Chrome Driver
Public Sub Chrome(ByVal driverPath As String, Optional ByVal driverUrl As String = "http://localhost:9515")
    start driverPath & " --port=9515", driverUrl, "chrome"
End Sub

最後に

タイトルに記載すれば検索に引っ掛かりやすくなると思うので書いてみました。

6
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?