HtmlUnit按钮单击不提交

时间:2016-07-25 05:51:25

标签: javascript forms button click htmlunit

我试图点击HtmlUnit中的按钮登录网站(m.pge.com),但它无法正常工作。浏览器保持在同一页面上。我和另一个网站有类似的问题。我尝试过搜索,但没有得到明确的答案。 我可能做错了什么想法?

这是代码..

    Web_Client = new WebClient(BrowserVersion.CHROME);
    Web_Client.getOptions().setCssEnabled(false);
    Web_Client.getOptions().setThrowExceptionOnScriptError(false);
    Web_Client.setJavaScriptTimeout(15000);
    Web_Client.getOptions().setRedirectEnabled(true);

    //Web_Client.setAjaxController(new NicelyResynchronizingAjaxController());
    // load home page
    HtmlPage page = Web_Client.getPage("https://m.pge.com/#login");
    HtmlTextInput userName = loginForm.getFirstByXPath("//*[@id=\"usernameField\"]");
    HtmlPasswordInput passWord = loginForm.getFirstByXPath("//*[@id=\"passwordField\"]");
    userName.setValueAttribute(user);
    passWord.setValueAttribute(password);
    HtmlButton button = null;
    DomNodeList<DomElement> buttonList =  page.getElementsByTagName("button");
    for (Iterator buttonIter = buttonList.iterator(); buttonIter.hasNext();) {
        DomElement domElement = (DomElement) buttonIter.next();
        if(domElement.asText().equals("SIGN IN")) {
            button = (HtmlButton)domElement;
        }
    }

    loginpage = button.click();

1 个答案:

答案 0 :(得分:0)

输入评论太繁琐且不清楚所以我输入它作为答案,并会随着进度而更新。

第1部分:登录 首先,你确定你正确地定位了按钮,你在哪里初始化HtmlPage登录页面。通常,当您指定

loginpage = button.click();

它将为您提供登录页面,但有时奇怪的是它不会分配新页面而是更改当前页面。那是你的

page

您可以尝试在按钮单击之前打印出来,然后在按钮单击后查看此页面是否更改?

System.out.println(page.asText());
button.click(); // no need to assign page, if the page changes itself
System.out.println(page.asText());

第2部分:搜索

当您完成输入文本框和按钮单击后,您必须再次搜索后定位更改元素并获取其内容,例如,如果它是一个元素,您可能应该在按钮单击后定位该元素并获取之后你想要的内容。如果您在按钮单击之前将其定位,则该元素中的内容不会自行更改,您需要再次获取该内容。