2014-03-13 189 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