如何通过Power Shell将文本输入到输入字段?

时间:2014-02-21 16:38:13

标签: windows internet-explorer powershell scripting

这是一个触发Internet Explorer的PowerShell脚本,打开LinkedIn登录页面并在用户名文本字段中输入一些文本。

$ie = New-Object -Com "InternetExplorer.Application"
$ie.Navigate("www.linkedIn.com")
$ie.Visible = $true

$doc = $ie.document
$usernameElement = $doc.getElementByTagName("input") | Where-Object {$_.id = "session_key-login""}
$usernameElement.Click()

Get-Process iexplore | Foreach-Object {$_.CloseMainWindow()}

不幸的是,我一直收到以下错误:

You cannot call a method on a null-valued expression.
At C:\Users\Pinku\Desktop\Untitled1.ps1:7 char:23
+ $usernameElement.Click <<<< ()
+ CategoryInfo          : InvalidOperation: (Click:String) [], RuntimeExcepti 
on
+ FullyQualifiedErrorId : InvokeMethodOnNull

我已经尝试但未能从这个问题中缓解自己。请建议!

1 个答案:

答案 0 :(得分:0)

请尝试使用$doc.getElementsByTagName("input")直接检索ID,而不是使用getElementById,然后尝试过滤结果:

$usernameElement = $doc.getElementById("session_key-login")
$usernameElement.Click()

--- ---编辑

使用上述内容后仍然得到null-valued expression的回复:

错误消息是它找不到任何名为“session_key-login”的元素,因此返回$ null,因此,当您尝试调用Click()方法时,它会抛出错误。有些事要尝试:

- 检查id是否存在。在创建$ ie对象后运行以下代码,并查看是否存在与“session_key-login”匹配的ID:

$ie = New-Object -Com "InternetExplorer.Application"
$ie.Navigate("www.linkedIn.com")
$ie.Visible = $true

$doc = $ie.document
$doc.getElementsByTagName("Input") | Select Id, Name

- 尝试以管理员身份运行PowerShell会话。我知道在以管理员身份运行PowerShell之前,我无法正常启动IE。对于前者即使创建了iexplore进程,物理Internet Explorer窗口也没有为我打开。