# Selenium WebDriver のライブラリを読み込み
Add-Type -Path "C:\Users\Syuji\.nuget\packages\selenium.webdriver\4.35.0\lib\netstandard2.0\WebDriver.dll"
Add-Type -Path "C:\Users\Syuji\.nuget\packages\selenium.support\4.35.0\lib\netstandard2.0\WebDriver.Support.dll"
# EdgeDriver のパスを指定
$edgeDriverPath = "E:\tool\edgedriver_win64\msedgedriver.exe"
## 非同期・多重化: 複数の InPrivate ウィンドウで独立検索
# 最大起動数とキーワードを設定
$maxSessions = 3 # 必要に応じて変更
$keyword = "Selenium" # 入力する検索語
$holdSeconds = 5 # 検索結果を表示したまま待つ秒数(0で即終了)
$jobs = @()
for ($i = 1; $i -le $maxSessions; $i++) {
$jobs += Start-Job -Name "GoogleSearch_$i" -ScriptBlock {
param($driverPath, $kw, $hold)
# 各ジョブ内で Selenium DLL を読み込み(ジョブは別セッションのため)
Add-Type -Path "C:\Users\Syuji\.nuget\packages\selenium.webdriver\4.35.0\lib\netstandard2.0\WebDriver.dll"
Add-Type -Path "C:\Users\Syuji\.nuget\packages\selenium.support\4.35.0\lib\netstandard2.0\WebDriver.Support.dll"
$opts = New-Object OpenQA.Selenium.Edge.EdgeOptions
$opts.UseChromium = $true
$opts.AddArgument("start-maximized")
$opts.AddArgument("inprivate")
$dir = Split-Path -Path $driverPath -Parent
$drv = New-Object OpenQA.Selenium.Edge.EdgeDriver($dir, $opts)
try {
$drv.Manage().Timeouts().ImplicitWait = [TimeSpan]::FromSeconds(10)
$drv.Navigate().GoToUrl("https://www.google.com")
$box = $drv.FindElement([OpenQA.Selenium.By]::Name("q"))
$box.Clear()
$box.SendKeys($kw)
Start-Sleep -Milliseconds 300
$btns = $drv.FindElements([OpenQA.Selenium.By]::Name("btnK"))
$btn = $null
foreach ($b in $btns) { if ($b.Displayed -and $b.Enabled) { $btn = $b; break } }
if ($btn) { $btn.Click() } else { $box.SendKeys([OpenQA.Selenium.Keys]::Enter) }
if ($hold -gt 0) { Start-Sleep -Seconds $hold }
}
finally {
# 結果を見続けたい場合は次行をコメントアウト
$drv.Quit()
}
} -ArgumentList $edgeDriverPath, $keyword, $holdSeconds
# 立ち上げタイミングを少しずらす
Start-Sleep -Milliseconds 200
}
# 非同期実行のままスクリプトを終える(待機したい場合は以下を有効化)
# Wait-Job -Job $jobs | Receive-Job