2011-02-02 12 views
9

私は、JavaでHtmlUnitを使用してWebサイトにログインしようとしています。最初にユーザー名とパスワードを入力します。その後、私はドロップダウンボックスからオプションを選択する必要があります。ユーザーとパスワードを入力しているように思えましたが、ドロップダウンボックスから項目を選択しようとするとエラーが表示されます。誰でもこの問題を解決する手助けができますか?私のコードは次の通りです:JavaでHtmlUnitを使用するには?

import com.gargoylesoftware.htmlunit.WebClient; 
import com.gargoylesoftware.htmlunit.html.HtmlElement; 
import com.gargoylesoftware.htmlunit.html.HtmlOption; 
import com.gargoylesoftware.htmlunit.html.HtmlPage; 
import com.gargoylesoftware.htmlunit.html.HtmlSelect; 


public class homePage { 
    public static void main(String[] args) throws Exception { 

    final WebClient webClient = new WebClient(); 
    final HtmlPage page = webClient.getPage("website name here"); 
    HtmlElement usrname = page.getElementByName("username"); 
    usrname.click(); 
    usrname.type("myusername"); 
    HtmlElement psswrd = page.getElementByName("password"); 
    psswrd.click(); 
    psswrd.type("mypassword"); 
    HtmlSelect select = (HtmlSelect) page.getElementById("cmbProducts"); 
    HtmlOption option = select.getOptionByValue("ITDirect"); 
    select.setSelectedAttribute(option, true); 
    HtmlElement signin = page.getElementByName("SignIn"); 
    signin.click(); 
    System.out.println(page.getTitleText()); 
    webClient.closeAllWindows(); 
    } 
} 
+4

は、あなたが得るエラーは、非常に参考になる、まさに私たちに告げます。 – MatrixFrog

答えて

3

ここではHTMLunitの単体テストのコードです。

final HtmlSelect select = form.getSelectsByName("select1").get(0); 
final List<HtmlOption> expected = new ArrayList<HtmlOption>(); 
expected.add(select.getOptionByValue("option1")); 
expected.add(select.getOptionByValue("option3")); 

getElementByIdではなくgetSelectsByNameを使用することに注意してください。

これらの単体テストへのリンクがあり、APIを使用して処方されている様子を確認できます。 http://htmlunit.sourceforge.net/xref-test/com/gargoylesoftware/htmlunit/html/HtmlSelectTest.html

3

ログインユーザー名とパスワードの形式を取得します。ここ

は一例です:

HtmlPage page3; 
    page3 = webClient.getPage("Website"); 
    HtmlForm loginForm = page3.getFormByName("loginForm"); 
    HtmlTextInput username = loginForm.getInputByName("NameofUsernameElement"); 
    HtmlPasswordInput pass = loginForm.getInputByName("NameofPassowordElement"); 
    HtmlSubmitInput b = loginForm.getInputByValue("LoginButtonValue"); 

    username.setValueAttribute("Actualy Username"); 
    pass.setValueAttribute("Actual Password"); 
    HtmlPage page2; 
    page2 = b.click(); 
関連する問題