提问人:Tamanna Agarwal 提问时间:4/24/2020 更新时间:4/24/2020 访问量:148
powershell 是否具有能够控制 IE 导航的先决条件?
Are there any prerequisites for powershell to be able to control IE navigation?
问:
我很难在应用程序浏览器中捕获搜索的输出。
要求: 1. 登录到应用程序 URL。 2.搜索 3.捕获结果
我有一个代码,它在一台服务器上运行良好,但在其他机器上表现得很奇怪。powershell 版本和 IE(11) 在所有这些版本上都是相同的。在好的服务器上,一切都很好。在错误的服务器上,powershell 无法仅获取第 3 点的元素和类名。它每次都捕获空字符串。甚至$ie。Document.getElementsByTagName(“body”) 在错误的服务器上返回空。
我是 powershell 的新手,不确定我是否错过了任何东西。任何人都可以在这里提出想法吗?
代码如下:
$username = "user1"
$password = "pwd1"
$url="application URL"
$search="tamanna"
$ie = New-Object -ComObject 'InternetExplorer.Application'
$ie.visible=$true
$ie.navigate($url)
while($ie.ReadyState -ne "4")
{
start-sleep -Seconds 5;
}
($ie.document.getElementById("login-form-username") |select -first 1).value = $username;
($ie.document.getElementById("login-form-login-password") |select -first 1).value = $password;
$ie.document.getElementById("login-form-login").click()
while ($ie.Busy -eq $true) { Start-Sleep -Seconds 5; }
$ie.navigate("Search URL within application")
while ($ie.ReadyState -ne "4") { Start-Sleep -Seconds 5; }
$text=$ie.Document.getElementsByTagName("span") | Where-Object{$_.className -eq 'class1_unique'} |select -first 1
while ($ie.ReadyState -ne "4") { Start-Sleep -Seconds 5; }
$searchResult=$text.innerText
$searchResult
答:
我试图测试您的代码以检查其中是否存在问题。根据我的测试结果,您的代码在我这边运行良好。
经过一番研究,我发现该问题可能与Internet Explorer安全设置有关。
我注意到,当为 Internet 区域启用保护模式时,我得到了相同的行为。
出于测试目的,您可以尝试禁用 Internet 和本地 Intranet 区域的保护模式,以查看它是否有助于解决您的问题。或者,您可以尝试以管理员身份运行脚本。
要禁用保护模式,您可以参考以下步骤。
启动 Internet Explorer 浏览器。
单击“工具”(Alt + X)。
单击“Internet 选项”。
单击“安全”选项卡。
未选中 Internet 和本地 Intranet 区域的启用保护模式选项。
重新启动 Internet Explorer 浏览器。
之后,尝试运行 PowerShell 脚本以查看结果。
让我们知道您的测试结果,它是否解决了这个问题。
评论