powershell - 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 浏览器,但不会导航到它们,同时检查作业详细信息是否显示没有错误消息?
解决方案
在这里发帖以提高知名度-希望这可以减轻其他人的压力:
我的功能在直接运行时运行良好,但在通过 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)
推荐阅读
- python - 如何使用包含特殊字符的名称重命名熊猫数据框?
- javascript - 使用 Node,如何使用 Connect 处理 Data/End/Error 事件?
- raspberry-pi - OpenBMC 与 Raspberry Pi(2 或 3)并构建 bmcweb?
- tensorflow - 在急切模式下对字符串张量调用 map 时,需要一个类似字节的对象,而不是“张量”
- http - 无法向 Google Apps 脚本发送 POST 请求
- php - Laravel 多对多返回空集合
- c# - C# 正则表达式在字符串多次出现之间提取值
- tensorflow - Keras 预测导致 CUDA_ERROR_OUT_OF_MEMORY
- vhdl - 在 Pre-Synthesis / Post-Synthesis 中使用 ModelSim 模拟 VHDL 设计时有条件地使用库
- php - Auth::attempt($credentials) 总是返回 false