このフォーラムをしばらく読んでいましたが、サインアップしたばかりです。これは私の最初の投稿です。ここで素晴らしい仕事をしたことを称賛します。
HtmlUnit を使用して、購読している雑誌の 1 つに接続し、ログインして興味のある記事を検索する目的で、Java でプログラムを作成しています。それが機能すると、メールが送信されますが、それは私の質問には関係ありません。
ログインが機能しません:
- ページを読みました
- ログインボタンを見つけてクリックします
- 新しいページで結果を取得し、フォームを抽出してユーザー名とパスワードを入力し、最後に
- ログインボタンをクリック
ログインをクリックすると、ポップアップが表示されます。しかし、ポップアップをキャプチャできないようです。
これは私のコードです:
public void authenticate() throws MalformedURLException, IOException
{
LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");
java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
java.util.logging.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.OFF);
WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_9);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getCookieManager().setCookiesEnabled(true);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setPopupBlockerEnabled(false);
webClient.addWebWindowListener(new WebWindowListener()
{
public void webWindowOpened(WebWindowEvent event)
{
System.out.println("a NEW window opened: " + event.getNewPage());
windows.add(event.getWebWindow());
}
@Override
public void webWindowClosed(WebWindowEvent event) {
System.out.println("a window is CLOSED: " + event.getOldPage());
// TODO Auto-generated method stub
}
@Override
public void webWindowContentChanged(WebWindowEvent event) {}
});
// Get the first page
HtmlPage page1 = webClient.getPage("**");
HtmlDivision div = (HtmlDivision) page1.getElementById("topContainer");
HtmlAnchor anchor = (HtmlAnchor) div.getElementById("loginBtn1");
HtmlPage logPage = (HtmlPage) anchor.click();
System.out.println("logPage is: "+logPage);
if ( windows.size() > 0)
{
System.out.println("YIOUHOUU");
HtmlPage popupPage = getPopupPage();
System.out.println(popupPage.getTitleText());
}
HtmlForm form = logPage.getFormByName("loginForm");
System.out.println("Form: "+ form);
HtmlTextInput username = form.getInputByName("username");
HtmlPasswordInput password = form.getInputByName("password");
HtmlCheckBoxInput rememberPassword = form.getInputByName("remember");
HtmlCheckBoxInput acceptTerms = logPage.getElementByName("acceptTerms");
HtmlAnchor button = form.getElementById("loginButton");
username.setValueAttribute("USER");
password.setValueAttribute("RANDOM_PASS");
rememberPassword.setChecked(true);
acceptTerms.setChecked(true);
System.out.println(form.toString());
HtmlPage page2 = button.click();
System.out.println(page2.asText());
webClient.closeAllWindows();
}
ログインページを取得し、フォームを取得してフィールドを提供します。これですべて完了ですが、2 ページ目でログインをクリックしても何も起こりません。
フィールドを送信して [送信] をクリックしても、何も起こりません。HTML ページのソースを見ていますが、理由がわかりません。バックグラウンドで ajax か sth ですか?
助けてくれてありがとう