2014-02-21 66 views
0

這是一個觸發Internet Explorer的PowerShell腳本,打開LinkedIn登錄頁面並在用戶名文本字段中輸入一些文本。如何通過Power Shell將文本輸入到輸入字段中?

$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 

我都試過,但一直無法從這個issue.Please建議減輕嘍!

回答

0

而不是使用$doc.getElementsByTagName("input"),然後試圖通過結果來過濾,請嘗試直接檢索ID使用getElementById

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

---編輯---

響應仍然得到null-valued expression後使用上述:

錯誤消息是它無法找到所謂的「session_key可以登錄」的任何元素,因此它返回$空,因此,當您嘗試調用Click()方法,它會拋出錯誤。有些事情可以嘗試:

- 查看id是否存在。創建$即對象後,運行下面的代碼,並查看是否有匹配「session_key可以登錄」的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會話爲管理員。我知道我無法正確啓動IE,直到我以管理員身份運行PowerShell。例如。即使創建了iexplore進程,物理Internet Explorer窗口也不會爲我打開。

+0

嗨,感謝您的回覆,但我已經嘗試過您的解決方案。我仍然得到同樣的錯誤。 –

+0

請參閱上述編輯以獲取其他疑難解答步驟 – HAL9256

+0

我收到此貼子您的建議 - '您無法在空值表達式上調用方法。 在C:\ Users \ Pinku \ Desktop \ Untitled1.ps1:6 char:45 + $ usernameElement = $ doc.getElementsByTagName <<<<(「Input」)|選擇ID,名稱 + CategoryInfo:InvalidOperation:(getElementsByTagName:String)[],RuntimeException + FullyQualifiedErrorId:InvokeMethodOnNull 您無法在空值表達式上調用方法。 在C:\用戶\產品庫\桌面\ Untitled1.ps1:7字符:23 + $ usernameElement.Click <<<<() + CategoryInfo:InvalidOperation:(點擊:字符串)[],的RuntimeException + FullyQualifiedErrorId: InvokeMethodOnNull' –