使用 Powershell 的 IE 自动化发送 ENTER 键

IE Automation with Powershell send ENTER Key

我正在使用 ServiceNow 执行 IE 自动化,其中有一个选项可以填充搜索数据,但没有可用于使用 CLICK 方法的搜索按钮。因此,我正在寻找在填充搜索数据后输入 {ENTER} 或 {~} 之类的键的方法。但我正处于 PowerShell 脚本的中间阶段,不确定如何使用它。

如果有人能帮助我提供方法,将不胜感激。

$IE = New-Object -ComObject InternetExplorer.application
$IE.FullScreen = $false
$IE.Visible = $true
$IE.Navigate($ServiceNowURL)

While ($IE.Busy -eq $true)
{
    Start-Sleep -Milliseconds 50
}

$Enter = Read-Host 'To continue press ENTER'

#Enter
$Search = $IE.Document.IHTMLDocument3_getElementsByTagName('input') | ? {$_.id -eq 'sysparm_search'}
$EnterValue = $Search.value() = $TicketNumber

首先,您需要激活 IE window 并使用 AppActivate 将其置于最前面,然后使用 focus() 将焦点设置到搜索区域。之后,您可以使用 SendKeys.

发送 Enter

我以https://www.google.com搜索为例,你可以参考我下面的代码示例。我测试了一下,效果很好:

[void] [System.Reflection.Assembly]::LoadWithPartialName("'System.Windows.Forms")
[void] [System.Reflection.Assembly]::LoadWithPartialName("'Microsoft.VisualBasic")

$ie = New-Object -ComObject 'InternetExplorer.Application'
$ie.Visible=$true
$ie.Navigate("https://www.google.com") #change it to your own url
while($ie.ReadyState -ne 4 -or $ie.Busy) {Start-Sleep -m 100}
$search=$ie.Document.getElementsByName("q")[0] #change it to your own selector
$search.value="PowerShell" #change it to your own search value

Sleep 5
$ieProc = Get-Process | ? { $_.MainWindowHandle -eq $ie.HWND }
[Microsoft.VisualBasic.Interaction]::AppActivate($ieProc.Id) 
$search.focus() 
[System.Windows.Forms.SendKeys]::Sendwait("{ENTER}");