基本IE自动化问题 - PowerShell

时间:2016-06-01 11:58:26

标签: powershell internet-explorer browser-automation

道歉,我对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>

所以我确信我能找到正确的对象,但它似乎并没有接受“价值”。尝试将数据传递给它时的方法。

值确实显示为对象的属性,因此我无法理解为什么它不能通过。 非常感谢您提供的任何帮助和时间!

2 个答案:

答案 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"