基本的 IE 自动化问题 - PowerShell

Basic IE Automation Issues - PowerShell

抱歉,我对 PowerShell(以及一般的脚本编写)非常陌生,而且我在 IE 自动化的基础知识方面遇到了问题,我无法完全理解。 我想要做的是有一个自动登录到网页的脚本,然后将数据输入到表单中。但我似乎无法将数据输入到登录页面的文本输入字段中。我一直在互联网上左右搜索,但还没有找到答案,尽管我想这将是一个显而易见的答案。

到目前为止,这是我的脚本:

$ie = new-object -ComObject InternetExplorer.Application;

$requestUri = "www.testurl.com"


$ie.visible = $true
$ie.navigate($requestUri)
while ($ie.ReadyState -ne 4)
{ 
    start-sleep -Seconds 1; 
}

$doc = $ie.Document
$doc.GetElementById("ppm_login_username") = $userName
$userName.value = "UserName"

但是,每当我 运行 脚本时,我都会收到错误消息

The property 'value' cannot be found on this object. Verify that the property exists and can be set.
+ $userName.value = "UserName"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyNotFound

我对很多这方面都没有经验,所以再次为使用不正确的术语道歉。 使用 DOM 浏览器,输入字段具有以下代码行:

<INPUT id=ppm_login_username maxLength=240 size=40 name=userName>

所以我确信我得到了正确的对象,但在尝试将数据传递给它时它似乎不接受 'value' 方法。

Value 确实显示为对象的 属性,所以我不明白为什么它没有通过。 非常感谢您提供的任何帮助和时间!

变量$userName在哪里定义的? 它需要有 属性 "value".

通常你可以这样添加:

$Username | Add-Member -MemberType NoteProperty -Value "UserName" -Name value

但我不确定这是否适用于字符串类型的变量。

我不确定你为什么要尝试设置 $userName.value = "UserName"

此外,最好只使用 Invoke-WebRequest / Invoke-RestMethod,而不是尝试自动化 IE :)

https://technet.microsoft.com/de-de/library/hh849901.aspx

https://technet.microsoft.com/en-us/library/hh849971(v=wps.620).aspx

你搞混了。应该是$variable = value。尝试:

$doc = $ie.Document
#Set $username to reference of "ppm_logon_username"-input node
$userName = $doc.GetElementById("ppm_login_username")
$userName.value = "UserName"