我试图点击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();
答案 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部分:搜索
当您完成输入文本框和按钮单击后,您必须再次搜索后定位更改元素并获取其内容,例如,如果它是一个元素,您可能应该在按钮单击后定位该元素并获取之后你想要的内容。如果您在按钮单击之前将其定位,则该元素中的内容不会自行更改,您需要再次获取该内容。