道歉,我对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>
所以我确信我能找到正确的对象,但它似乎并没有接受“价值”。尝试将数据传递给它时的方法。
值确实显示为对象的属性,因此我无法理解为什么它不能通过。 非常感谢您提供的任何帮助和时间!
答案 0 :(得分:0)
变量$userName
在哪里定义?
它需要具有属性&#34;值&#34;。
通常你可以这样添加:
$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
答案 1 :(得分:0)
你把它搞混了。它应该是$variable = value
。尝试:
$doc = $ie.Document
#Set $username to reference of "ppm_logon_username"-input node
$userName = $doc.GetElementById("ppm_login_username")
$userName.value = "UserName"