2017-04-22 2 views
0

私はhtmlunitを新しくしており、htmlunitで書かれたウェブページのテストを行う必要があります。そのログインページにはフォームはありません。以下は htmlunitノックアウトjsが動作しません。送信ボタンをクリックして同じページを返す

は、ユーザー名、パスワードのHTMLコードで、送信ボタン -

<div class="loader-mask" data-bind="visible: false"> 
        <div class="loader"> Loading Form...</div> 
       </div> 
       <div class="form-group"> 
        <label class="control-label">Email ID:</label> 
        <input type="text" name="username" class="form-control" placeholder="[email protected]" data-bind=" 
         value: loginHandler.userEmail, 
         enterKey: signIn 
        "> 
       </div><!-- /.form-group --> 
       <div class="form-group"> 
        <label class="control-label">Password:</label> 
        <input type="password" name="password" class="form-control" placeholder="Passwords are case-sensitive" data-bind=" 
         value: loginHandler.userPassword, 
         enterKey: signIn 
        "> 
       </div><!-- /.form-group --> 
       <div class="text-right"> 
        <p><button type="button" id="qaSignIn" class="btn btn-default" data-bind=" 
         click: signIn, 
         disable: loginHandler.isLoggingIn, 
         continueOn: userLoggedIn, 
         continueLink: { link: 'dashboard.html', params: {} } 
        "> 

さて、htmlunitで、私は簡単に、ユーザー名、パスワード、およびボタンを取得することができると私は、ユーザー名の値を設定することができていますし、パスワード欄も同様ですが、ボタンをクリックすると、同じHTMLログインページが返されます。私はブラウザの資格情報でログインしようとしましたが、そこにログインすることができます。だから資格は良いです。

マイhtmlunitコードがある -

HtmlTextInput htmlInputUsername = (HtmlTextInput) loginPage.getElementByName("username"); 
htmlInputUsername.setValueAttribute("myUserName"); 
HtmlPasswordInput htmlInputPassword = (HtmlPasswordInput) loginPage.getElementByName("password"); 
htmlInputPassword.setValueAttribute("myPassword"); 
HtmlButton htmlButton = (HtmlButton) loginPage.getElementById("qaSignIn"); 
loginPage = htmlButton.click(); 

私は前にして、ログインボタンが、その戻って同じXMLページをクリックした後)(page.asXmlを印刷してみました。私は間違って何を考えている?事前に

webClient.getOptions().setUseInsecureSSL(true); 
webClient.getCookieManager().setCookiesEnabled(true); 
webClient.getOptions().setJavaScriptEnabled(false); 
webClient.getOptions().setCssEnabled(true); 
webClient.getOptions().setRedirectEnabled(true); 
webClient.setAjaxController(new NicelyResynchronizingAjaxController()); 
webClient.waitForBackgroundJavaScript(30000); 

おかげ - は、私も、これらのオプションを設定しようとしています。

答えて

1

あなたのページを分析するためのURLを知らずに、私は推測できるだけです。二

webClient.waitForBackgroundJavaScript(30000); 

ではJavaScript

webClient.getOptions().setJavaScriptEnabled(true); 

を有効にするには、最初の試みで

はオプションではありません。 WebClientのセットアップ中にそれを行うことは無意味です。あなたのクリック

loginPage = htmlButton.click(); 
webClient.waitForBackgroundJavaScript(30000); 

後にこの呼び出しを配置する必要があることは多分あなたのテストのためにWETATOR(www.wetator.org)を使用するためのオプションです。ウェブページとの相互作用ははるかに簡単で、すべての待機魔法は自動的に行われます。

+0

助けること。 ありがとうございますが、次の問題です - ブラウザでアプリケーションにログインすると、しばらくの間サブミットボタンが無効になって、次のページにリダイレクトされるのがわかります。 私たちのコードでは、ボタンをクリックして返されたページには無効なボタンがあります。それ以降は何も起こっていない。それは次のページにリダイレクトしていません。 –

+0

私のページでもう1つチェックしたのは、

0

jsのAJAX "window.location.href" このようなコードを持っていることがありますが、このコードのように行う必要があります.then:

List<WebWindow> webWindows = client.getWebWindows(); 
WebWindow webWindow = webWindows.get(0); 
HtmlPage page = (HtmlPage) webWindow.getEnclosedPage(); 
関連する問題