这是一个触发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
我已经尝试但未能从这个问题中缓解自己。请建议!
答案 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窗口也没有为我打开。