2016-05-01 15 views
0

フィールドには入力されたものは表示されません。また、入力する必要もありません。私は使うことができますか?今現在行っているSelenium Javaポップアップ認証「http:// user:[email protected]」が機能しません

public static void main(String[] args){ 

    WebDriver driver = new FirefoxDriver(); 
    String user = "kek"; 
    String pass = "trekek"; 
    String url = "http://www."+ user + ":" + pass + "@xyz.org/auth.html"; 
    System.out.println(url); 
    driver.get(url); 
} 

答えて

0

ユーザー名とパスワードのURLの形式が間違っているようです。あなたは資格証明書の前にWWWを持っている、のようなものにそれを変更してみてください:。で埋めたり、それはそれらを埋めるためにしようとしないようこれは、フィールドのいずれかが表示されません

String url = "http://"+ user + ":" + pass + "@www.xyz.org/auth.html"; 
0

またどちらでもないと!そのようなURLを使用すると、HTTP仕様では、クライアントがURLに埋め込まれた資格情報を含むGET要求をサーバーに送信すると言います。サーバーがこれを行うのは、サーバーをどのように実装したかによって異なります。

これで、ログインページに詳細情報を事前に送信するようにサーバーを実装することができましたが、それはできません。

  • ユーザーの詳細をURLに入れることは安全ではありません。それらはサーバー側のログに表示されます。

  • これはです.HTTP URLを使用すると、恐ろしく不安定です、つまり、そのURLがネットワーク経由でクリアに送信されることを意味します。ハッカーが暗号化されていない接続をスヌープするのは簡単です。

  • これは、ほとんどのユーザーが通常使用する機能ではありません。

  • これは、RESTful APIを実装する(または使用する)方法ではありません。


ソリューション?

  • 既存のサーバーに対してSeleniumテストを実装する場合は、サーバーのログインシーケンスを動作させるように設計する必要があります。サーバーをトリガーするリクエストを送信して、ログインページを表示します。フィールドの入力をシミュレートして、「ログイン」をクリックします。レスポンスからセッションクッキーを抽出します。

  • サーバーを制御する(つまり変更することができます)場合、プログラム認証用の代替Web APIを設計できます。あなたのSeleniumテストではログインフォームの記入と提出をシミュレートする必要はありません。しかし、しっかりしてください。ユーザー名とパスワードは、HTTPS経由でのみ送信する必要があります。

+0

これはある意味があります。だからこれは100%安全なことが非常に重要ではないが、あなたは2つのユーザー名パスワードコンボをテストしたいと言うことができます:1つは動作する場合、別の動作しない場合は、私はちょうど最初のURLを使用し、セレンを使ってそれらを埋めるのをシミュレートしますか?それが動作するかどうかをテストして動作しないのですか? – swedishfished

+0

あなたの言っていることを理解できません。あなたの本当のユースケースは何ですか?たくさんの異なるサイトをウェブスクラップするためのものですか? –

+0

正直言って、私はこのフォームにログオンして何がうまくいくか試してみるために初めてセレンを混乱させようとしています。セレンはこれを行う最良の方法ですか、別の方法でリクエストを送ることはできますか? – swedishfished