2014-03-13 216 views
0

我想寫一個powershell腳本,只需登錄到salesforce.com。從那裏,我會找到一些結果HTML,看看它是否成功。這是我迄今爲止所擁有的。PS腳本登錄到salesforce.com

$username = "myusername" 
$password = "mypassword" 
$ie = New-Object -com InternetExplorer.Application 
$ie.visible=$true 
$ie.navigate("https://login.salesforce.com") 

$ie.document.getElementById("username").value= "$username" 
$ie.document.getElementById("pw").value = "$password" 
$ie.document.getElementById("Login").Click() 

我的問題是,當我執行點擊的方法沒有任何反應。由於表單可見,我可以看到用戶名和密碼字段設置正確。當我執行Click時什麼都不會發生。

我沒有過去從網站的代碼,但你可以在https://login.salesforce.com

任何人查看源代碼有何單擊不工作的任何想法。不知道是因爲按鈕的類型,還是使用JavaScript的onclick方法等。

回答

0

歡迎來到堆棧溢出。你的腳本是非常相似的一個發現這裏:http://gallery.technet.microsoft.com/scriptcenter/69eaa0bc-c0fc-4948-bd4c-6dab8d85179e

$username = "myusername" 
$password = "mypassword" 
$ie = New-Object -com InternetExplorer.Application 
$ie.visible=$true 
$ie.navigate("https://login.salesforce.com") 
while ($ie.Busy -eq $true) 
{ 
    Start-Sleep -Milliseconds 1000; 
} 
$ie.document.getElementById("username").value= "$username" 
$ie.document.getElementById("pw").value = "$password" 
$login = $ie.document.getElementsByTagName("button") | ? {$_.id -eq "Login"} 
$login.click() 

得到它的工作幾乎是相同的方式,但與谷歌的頁面,saleforce使用在很多地方id=Login,如果你運行$ie.document.getElementById("Login")你可以看到那tagName : DIV ...爲了獲得登錄按鈕,我剛開始獲取所有按鈕,然後找到登錄ID

+0

感謝您的答覆。代碼是有道理的,過去我曾嘗試過類似的東西,但它也不起作用。我收到一個錯誤「你不能調用一個空值表達式的方法 – user3416569

+0

@ user3416569當你省去while循環來檢查瀏覽器是否還在加載,然後睡覺1秒鐘,直到瀏覽器準備就緒時,會發生這種情況。儘管我已經在V2和V4上測試過它 – Cole9350

+0

不幸的是,我仍然遇到了同樣的錯誤,我甚至複製了這個塊並把它放到一個腳本文件中,並從powershell提示符運行它。想法我可能做錯了什麼? – user3416569