powershell中的Selenium不适用于Start-Job命令

时间:2018-05-06 00:02:47

标签: powershell selenium asynchronous jobs start-job

我有以下.dll个文件,以便通过powershell运行selenium: enter image description here

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

这是我的剧本:

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 enter image description here

打开Chrome窗口

目前,我只想测试一下,看看我是否可以同时打开两个不同的Chrome应用,并将它们都转到google.com

以下是该脚本:

enter image description here

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

enter image description here

1 个答案:

答案 0 :(得分:0)

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

我的函数在直接运行时运行良好,但在通过 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)