gpt4 book ai didi

java - HtmlUnit,尝试获取两种形式,在第二种形式中出现异常

转载 作者:行者123 更新时间:2023-11-30 04:59:49 25 4
gpt4 key购买 nike

当前使用 HtmlUnit。

获取第一个登录页面没有问题,登录成功,进入下一页,“点击”链接获取“我的详细信息”页面。

获得“我的详细信息”页面后,我想获得与获得第一个登录表单相同的方式。

为什么我需要获取表单是因为我想更改密码,并且字段在表单中。

当我尝试获取第二种形式时,它给出了如下异常:

com.gargoylesoftware.htmlunit.ElementNotFoundException:elementName=[form] attributeName=[name] attributeValue=[form2]

在这行代码中给出异常:

HtmlForm form2 = page3.getFormByName("form2");

注意:第一个表单名称为“form1”,第二个表单名称为“form2”。

这是 HtmlUnit 的问题吗?

代码:

try {
WebClient webclient = new WebClient(BrowserVersion.FIREFOX_3_6);
HtmlPage page1 = webclient.getPage("http://www.highveld.mobi/pages/clubvip/login.aspx");

HtmlForm form = page1.getFormByName("form1");
HtmlSubmitInput buttonLogin = form.getInputByName("cmdLogin");

HtmlTextInput cellLogin = form.getInputByName("txtCellNumber");
HtmlPasswordInput passLogin = form.getInputByName("txtLoginPassword");
cellLogin.setValueAttribute(change);
passLogin.setValueAttribute(oldPass);

HtmlPage page2 = buttonLogin.click();

HtmlAnchor link = page2.getAnchorByHref("updateprofile.aspx");
HtmlPage page3 = link.click();

System.out.println(page3.getUrl());
HtmlForm form2 = page3.getFormByName("form2");


HtmlPasswordInput pass = form2.getInputByName("txtPassword");
HtmlPasswordInput passConfirm = form2.getInputByName("txtConfirmPassword");
HtmlSubmitInput button = form2.getInputByName("cmdUpdate");

pass.setValueAttribute(newPass);
passConfirm.setValueAttribute(newPass);

HtmlPage page4 = button.click();
}

最佳答案

首先,如果您使用的是旧版本,请更新到 HtmlUnit 2.9。其次,将其替换为:

System.out.println(page3.getUrl());
HtmlForm form2 = page3.getFormByName("form2");

这样:

System.out.println(page3.getUrl());
System.out.println(page3.asXml());
HtmlForm form2 = page3.getFormByName("form2");

并检查 form2 元素是否存在,我很确定它不应该存在,因为它抛出 ElementNotFoundException。

我通常使用XPath而不是getFormByName,你也可以尝试一下。

希望这有帮助!

关于java - HtmlUnit,尝试获取两种形式,在第二种形式中出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7202395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com