首页 > 解决方案 > Powershell 中的 Selenium 不适用于 Start-Job 命令

问题描述

.dll为了通过 powershell 运行 selenium, 我有以下文件:在此处输入图像描述

您可以忽略扩展文件。基本上我想要发生的是使用Start-Job命令同时打开两个chrome浏览器,然后转到不同的 url。

这是我的脚本:

temp.ps1

# set the location to the current one where the dll's are
Set-Location -Path $args[0]
Get-ChildItem -Filter "*.dll" | ForEach-Object { Add-Type -Path $_.Name } # this will get all the dll's

# start chrome
$options = New-Object OpenQA.Selenium.Chrome.ChromeOptions
$options.BinaryLocation = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
$chrome = New-Object OpenQA.Selenium.Chrome.ChromeDriver($options)
$chrome.Navigate().GoToUrl("http://www.google.com")

运行它会在 google.com 上打开一个 chrome 窗口在此处输入图像描述

现在,我只是想测试一下我是否可以同时打开两个不同的 chrome 应用程序并让它们都去 google.com

这是那个脚本:

在此处输入图像描述

通过 powershell 窗口运行不符合我的预期?它会打开两个 chrome 浏览器,但不会导航到它们,同时检查作业详细信息是否显示没有错误消息?

在此处输入图像描述

标签: powershellseleniumasynchronousjobsstart-job

解决方案


在这里发帖以提高知名度-希望这可以减轻其他人的压力:

我的功能在直接运行时运行良好,但在通过 Start-Job 运行时安静地失败。它会在启动 ChromeDriver 服务时停止。

我通过在服务实例化期间传入“HideCommandPromptWindow”来指示 ChromeDriver 隐藏命令提示符窗口,从而解决了这个问题。

# Hook into our Chrome session on the Debugger port
$ChromeOptions = New-Object OpenQA.Selenium.Chrome.ChromeOptions
$ChromeOptions.debuggerAddress = "127.0.0.1:1111"

# Pass our configuration into ChromeDriver.exe
$ChromeService = [OpenQA.Selenium.Chrome.ChromeDriverService]::CreateDefaultService()
$ChromeService.HideCommandPromptWindow = $true

# Start ChromeDriver
$ChromeDriver = New-Object OpenQA.Selenium.Chrome.ChromeDriver($ChromeService, $ChromeOptions)

推荐阅读