基本的 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"
抱歉,我对 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"