Selenium в powershell не работает с командой Start-Job

У меня есть следующие файлы .dll для запуска селена через powershell: введите здесь описание изображения

Вы можете игнорировать файлы расширения. В основном то, что я хочу, - это использовать команду 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")

Запуск этого открывает окно Chrome на google.comвведите здесь описание изображения

На данный момент я просто хочу проверить, могу ли я одновременно открыть два разных приложения Chrome и заставить их оба перейти на google.com.

Вот этот скрипт:

введите здесь описание изображения

Запуск через окно powershell не дает того, что я ожидаю? Он открывает два браузера Chrome, но не переходит к ним, а также при проверке сведений о задании не выявляются сообщения об ошибках?

введите здесь описание изображения


person K Split X    schedule 06.05.2018    source источник
comment
Я был бы признателен, если бы один из вас попробовал это и просто продублировал то, что сделал я, чтобы увидеть, работает ли это у вас? Файлы, которые я получил из пакетов nuget, указаны здесь: wesum.wordpress. com/2017/08/26/first-blog-post   -  person K Split X    schedule 06.05.2018


Ответы (1)


Публикация здесь для наглядности - надеюсь, это спасет кого-то еще от стресса:

Моя функция отлично работала при прямом запуске, но тихо давала сбой всякий раз, когда она запускалась через Start-Job. Он прекратится прямо в момент запуска службы ChromeDriver.

Я решил эту проблему, поручив ChromeDriver скрыть окно командной строки, передав HideCommandPromptWindow во время создания службы.

# 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)
person Romeowns    schedule 16.04.2021