【问题标题】:Are there any prerequisites for powershell to be able to control IE navigation?powershell 是否有任何先决条件才能控制 IE 导航?
【发布时间】:2020-08-07 01:43:53
【问题描述】:

我很难在应用程序浏览器中捕获搜索的输出。

要求: 1. 登录申请网址。 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

【问题讨论】:

    标签: html powershell internet-explorer dom automation


    【解决方案1】:

    我尝试测试您的代码以检查其中是否存在问题。根据我的测试结果,您的代码在我这边运行良好。

    经过一番研究,我发现问题可能与 Internet Explorer 安全设置有关。

    我注意到,当 Internet 区域保护模式启用时,我会得到相同的行为。

    出于测试目的,您可以尝试禁用Internet本地Intranet区域的保护模式看看它是否有助于解决您的问题。作为替代方案,您可以尝试以 Administrator 身份运行脚本。

    要禁用保护模式,您可以参考以下步骤。

    1. 启动 Internet Explorer 浏览器。

    2. 点击工具 (ALT + X)。

    3. 点击互联网选项

    4. 点击安全标签。

    5. 未选中Internet本地Intranet区域的启用保护模式选项。

    6. 重新启动 Internet Explorer 浏览器。

    然后尝试运行您的 PowerShell 脚本以查看结果。

    让我们知道您的测试结果,无论它是否解决了这个问题。

    【讨论】:

    • 我按照您的步骤操作,但似乎没有解决问题。还有其他建议吗?此外,令人惊讶的是,在登录页面上,我可以得到 $ie.Document.getElementsByTagName("body")。但是,登录后, $ie.Document.getElementsByTagName("body") 给了我空值。我检查了就绪状态,它是 4。我不知道如何解决这个问题,
    • 您能告诉我们它是一个内部网站还是您从互联网访问该网站?您为哪个区域禁用了保护模式?两个 URL 是同一个域的一部分?您是否尝试以管理员身份运行脚本?
    • 这是一个内网站点。话虽如此,请注意代码在一台服务器上运行良好。两台服务器上的保护模式设置相同(本地 Intranet 和 Internet 都启用)。我仍然禁用并在坏服务器上重试,代码仍然无法正常工作。是的,我也以管理员身份运行了脚本:(
    • 我告诉过你,这个问题与代码无关。我认为这与设置或配置有关。如果您直接运行脚本,请尝试使用 Windows Powershell ISE 应用程序打开脚本文件并运行脚本以查看它是否显示任何错误消息。
    • 我在仅使用 ISE 应用程序并启用了调试和断点的情况下测试了所有这些。没有什么能帮我解决这个问题。我明白这是因为在我的应用程序 URL 中搜索后无法获得 $ie.Document.* 但不知道如何让它工作。关于设置,我想知道如何弄清楚,此时一切看起来都一样:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 2023-04-05
    • 2011-01-18
    • 2015-10-05
    相关资源
    最近更新 更多