none
usenameがnullなら&userをsubmitする RRS feed

  • 質問

  • こんにちは。

     

    あるforumにloginするのにうまくいかなくて困っています。

     

     

    function Login-Forex{
    param(
    [string]$uname,
    [string]$url="http://www.forex-tsd.com/",
    [bool]$cookie=$FALSE
    )

    $creds = get-credential  $uname
    $pass = $creds.GetNetworkCredential().Password
    $user =  $creds.GetNetworkCredential().username
    $ie=new-object -com internetexplorer.application
    $ie.visible=$FALSE
    $ie.navigate($url)
    # while($ie.ReadyState -ne 4) {start-sleep -Milliseconds 1}
    Start-Sleep -Seconds 5

    $ie.document.getElementById("navbar_username").value = $user
    $ie.document.getElementById("navbar_password").value = $pass
    # $ie.document.getElementsByName("PersistentCookie") | foreach {$_.checked=$cookie}
    $forms = @($ie.Document.forms | where {$_.action -match "do=login"})
    Start-Sleep -Seconds 5
    #  $ie.document.getElementById("Log In").submit()
    $forms[0].submit()
    }

    Login-Forex xxxxx

     

    navbar_username navbar_password がnullの場合があるので

    nullならばusernameとして$user、 passwordとして$passをsubmitしたいのですが

    どう書くかよくわかりません。ご教授ください。

     

    pjo

    2008年2月12日 2:10

回答

すべての返信

  • Nullかどうかの判定は

    if ( $ie.document.getElementById("navbar_username").value -eq $Null )
    {
      # ここにNullのときの処理を記述
    }

    のようにすればよいのではないでしょうか?


    HIRO's.NET http://hiro.wankuma.com/
    HIRO's.NET Blog http://blogs.wankuma.com/hiro/
    2008年2月12日 3:38
  • HIRO's.NETさん
    さっそくのコメントありがとうございます。
    試してみます。

    $userをsubmitするのはどうしたらよいでしょうか?
    2008年2月12日 3:45
  • while($ie.ReadyState -ne 4) {start-sleep -Milliseconds 1}

    これを実行すると永久に$ieがReadyにならないようなのですが、
    画面ではloadingは終了してます。
    2008年2月12日 4:33
  • >HIRO's.NETさん
    >さっそくのコメントありがとうございます。
    >試してみます。
    >
    >$userをsubmitするのはどうしたらよいでしょうか?



    $userは
    >$user =  $creds.GetNetworkCredential().username
    のところで取得できていますよね?

    submitする前に
    > $ie.document.getElementById("navbar_username").value = $user
    としているので、私には$userをsubmitしているように見えるのですが....

    何をどう困っているのか、もう少し具体的に書いて頂けますか?

    HIRO's.NET http://hiro.wankuma.com/
    HIRO's.NET Blog http://blogs.wankuma.com/hiro/
    2008年2月12日 13:00
  •  HIROs-NET さんからの引用
    >HIRO's.NETさん
    >さっそくのコメントありがとうございます。
    >試してみます。
    >
    >$userをsubmitするのはどうしたらよいでしょうか?



    $userは
    >$user =  $creds.GetNetworkCredential().username
    のところで取得できていますよね?

    submitする前に
    > $ie.document.getElementById("navbar_username").value = $user
    としているので、私には$userをsubmitしているように見えるのですが....

    何をどう困っているのか、もう少し具体的に書いて頂けますか?

     

    ここのところで、errorが出ます。

    navbar_username値がnullですと。

    それなので何が悪いかとhtmlを見ていたら、

    onfocus="if (this.value == 'User Name') this.value = '';"

    によってnullになる可能性があることがわかり、

    scriptでnullを判定し、$userをsubmitしないといけないと考えたわけです。

     

    $userは

    $user =  $creds.GetNetworkCredential().username

    で取得できています。

    困っているのは、

    $ie.document.getElementById("navbar_username").value = $user

    これを実行しないで$user $passをsubmitに渡す方法がわからないのです。


    HIRO's.NET http://hiro.wankuma.com/
    HIRO's.NET Blog http://blogs.wankuma.com/hiro/

    2008年2月12日 15:17
  • >$userは

    >$user =  $creds.GetNetworkCredential().username

    >で取得できています。

     

    であれば

    if ( $user -eq $Null )

    {

      #Nullの場合の処理

    }

    else

    {

      #Null以外の処理

      $ie.document.getElementById("navbar_username").value = $user

    }

    とすればよいのではないでしょうか?



    HIRO's.NET http://hiro.wankuma.com/
    HIRO's.NET Blog http://blogs.wankuma.com/hiro/

     

    2008年2月14日 13:28
  • 解決しました。

    PowerShellを管理者権限で実行すれば正常に動作します。
    2008年2月14日 13:36