我试图在IE中打开一个网址,然后传递用户名和密码登录到url.But我的代码没有填写用户名和密码
以下是代码
$username = "userhere"
$password = "passhere"
$ie = New-Object -com InternetExplorer.Application
$ie.visible=$false
$ie.navigate("https://ameriprisestage.service-now.com/")
#while($ie.ReadyState -ne 4) {start-sleep -m 100}
$ie.document.getElementById("user_name").value= "$username"
$ie.document.getElementById("user_password").value = "$password"
错误:您无法在空值表达式上调用方法。在第7行:char:1 + $ ie.document.getElementById(" user_name")。value =" $ username" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~ + CategoryInfo:InvalidOperation:(:) [],RuntimeException + FullyQualifiedErrorId:InvokeMethodOnNull
您无法在空值表达式上调用方法。在行:8 char:1 + $ ie.document.getElementById(" user_password")。value =" $ password" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ + CategoryInfo:InvalidOperation:(:) [],RuntimeException + FullyQualifiedErrorId:InvokeMethodOnNull
答案 0 :(得分:0)
有几点需要注意。首先,您的页面还没有准备好。 Yuo必须等待负载。您的注释行旨在实现此目的。其次,两个字段都在iframe中,作为一个单独的沙箱 - 有自己的文档对象。我还删除了窗口隐藏代码以查看结果。这是工作代码:
$username = "userhere"
$password = "passhere"
$ie = New-Object -com InternetExplorer.Application
$ie.navigate("https://ameriprisestage.service-now.com/")
while($ie.ReadyState -ne 4) {start-sleep -m 100}
$ie.document.getElementById('gsft_main').contentWindow.document.getElementById('user_name').value = $username
$ie.document.getElementById('gsft_main').contentWindow.document.getElementById('user_password').value = $password
确保关闭$ ie对象。你可能有很多这些作为后台进程。