Windows Powershell和Internet Explorer标记

Windows Powershell和Internet Explorer标记,windows,powershell,web,Windows,Powershell,Web,尝试让powershell ISE自动转到网站并单击“否”按钮。我曾尝试通过标记名获取元素,但它只是启动Internet Explorer,但之后无法获取元素。如有任何帮助,将不胜感激: $web = "https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flnks.gd%2Fl%2FeyJhbGciOiJIUzI1NiJ9.eyJidWxsZXRpbl9saW5rX2lkIjoxMDEsInVyaSI6Im

尝试让powershell ISE自动转到网站并单击“否”按钮。我曾尝试通过标记名获取元素,但它只是启动Internet Explorer,但之后无法获取元素。如有任何帮助,将不胜感激:

$web = "https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flnks.gd%2Fl%2FeyJhbGciOiJIUzI1NiJ9.eyJidWxsZXRpbl9saW5rX2lkIjoxMDEsInVyaSI6ImJwMjpjbGljayIsImJ1bGxldGluX2lkIjoiMjAyMTA1MTEuNDAyNjU1NjEiLCJ1cmwiOiJodHRwczovL3d3dy5mYWEuZ292L2Nvcm9uYXZpcnVzL3dlbGxuZXNzX2NoZWNrLyJ9.e4fctVtbkCtZ1yDQ2f2ZIyUCLgx3KceG4A0AIuiZTPk%2Fs%2F770634691%2Fbr%2F106182191351-l&data=04%7C01%7Csasha.tabib%40lstechllc.com%7Cb2bcd86b5a174ff6488108d914916338%7C93bb738069e94c7ca5fbfd30a5f59cc9%7C0%7C0%7C637563436952056800%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=0KULfdRzubnmWAdCqW94wE4%2F7fFTyuXSwNsCBSTGfkY%3D&reserved=0"
$ie = New-Object -Com InternetExplorer.Application
$ie.Visible = $true
$ie.Navigate($web)
$ie = getelementsbytagname('div')

错误显示为

在使用
Navigate()
方法后,您需要等待一段时间,以便IE有时间完成。
另外,
getElementsByTagName()
方法不是一个独立的函数,而是
$ie
中实际文档的方法

试一试


另外,您的原始url使我重定向到
”https://www.faa.gov/coronavirus/wellness_check/“
,因此我在上面的代码中使用了它。

如果您从powershell搜索如何在ie中执行javascript,可能会发现一些其他问题。谢谢您,当Internet Explorer具有未经检查的保护模式时,它可以工作。但现在我需要弄清楚如何循环或检查该网站上的三到四个问题,并关闭Internet Explorer。再次感谢你,我今天学到了一些东西。@Andreas当然,我没有比第一个“否”按钮更深入。我确实在单击之后添加了“wait it..”循环,因为在这一过程中的每一步都需要它。@Andreas顺便说一句。由于是新手,所以您可能不知道这一点,但通常是通过单击✓ 左边的图标。这将帮助其他有类似问题的人更容易找到它,并有助于激励人们回答你的问题。我道歉。非常感谢。
$ie = New-Object -ComObject InternetExplorer.Application
$ie.Visible = $true    

$ie.Navigate("https://www.faa.gov/coronavirus/wellness_check/")
# wait for it..
while ($ie.Busy -and $ie.ReadyState -ne 4) { Start-Sleep -Seconds 1 }

# find the 'NO' button and click it
($ie.Document.getElementsByTagName('button') | Where-Object { $_.id -eq 'noInit' }).Click()
# wait for it..
while ($ie.Busy -and $ie.ReadyState -ne 4) { Start-Sleep -Seconds 1 }

# and so on..

# when all done, release the COM object from memory
$ie.Quit()
$null = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($ie)
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()