<a href="javascript:__doPostBack('GridView1','Page$2')" style="color:White;">2</a>
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
final WebClient webClient = new WebClient(BrowserVersion.CHROME);
HtmlPage page = webClient.getPage("http://www.webpage.com/Main.aspx");
HtmlAnchor anchor = null;
List<HtmlAnchor> anchors = page.getAnchors();
for (int j = 0; j < anchors.size(); j++)
{
anchor = anchors.get(j);
String sAnchor = anchor.asText();
String sAnchorxml = anchor.asXml();
if (sAnchor.equals("2"))
{
HtmlPage page2 = anchor.click();
doc = Jsoup.parse(page2.asXml());
.....
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at test.advacus.com.MainProgram.main(MainProgram.java:148)
任何额外的帮助或任何建议的工具,而不是HTMLUnit,将更好地与jsoup合作,都将是真正有帮助的!提前感谢!
有关其他信息的编辑:看起来是click()
不起作用...我修改了代码,newPage主体看起来包含了与第一页相同的信息:
final WebClient webClient = new WebClient(BrowserVersion.CHROME);
HtmlPage page = webClient.getPage("http://www.qatarsale.com/EnMain.aspx");
HtmlAnchor anchor = page.getAnchorByText("2");
HtmlPage newPage = anchor.click();
HtmlElement el = newPage.getBody();
System.out.println(el.asText());
检查锚点--正如您已经指出的--调用dopostback
,因此调用javascript调用要简单得多,而不是首先获取锚点并在其上调用click。
示例代码
java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(java.util.logging.Level.OFF);
final WebClient webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setTimeout(10000);
try {
HtmlPage htmlPage = webClient.getPage("http://qatarsale.com/EnMain.aspx");
Document doc = Jsoup.parse(htmlPage.asXml());
System.out.println(doc.select("[id$=Label10]").text());
ScriptResult result = htmlPage.executeJavaScript("__doPostBack('GridView1','Page$2')");
htmlPage = (HtmlPage)result.getNewPage();
Thread.sleep(3000); // delay needed for lazy loading, there might be something cleaner
doc = Jsoup.parse(((HtmlPage)htmlPage).asXml());
System.out.println(doc.select("[id$=Label10]").text());
} catch (Exception e) {
e.printStackTrace();
} finally {
webClient.close();
}
输出
Toyota Porsche Mercedes-Benz Cadillac Jeep Porsche Porsche Nissan Mitsubishi BMW Porsche Ford Mitsubishi Toyota Nissan Land Rover Nissan Mercedes-Benz Nissan Nissan Toyota Toyota Porsche Mitsubishi Mitsubishi Nissan Nissan Mercedes-Benz Nissan Jeep Mercedes-Benz Lexus BMW Lexus
BMW Lexus Toyota Toyota Lexus Nissan Mercedes-Benz Mercedes-Benz Ferrari Dodge BMW Mercedes-Benz Aston Martin Mitsubishi Suzuki Maserati Porsche Maserati Land Rover Chevrolet Land Rover GMC Toyota Porsche Lexus Land Rover GMC Mercedes-Benz Toyota Lexus Toyota Lexus Toyota Nissan
问题内容: 我有以下代码: 后者需要通过单击缩略图来导航以下HTML(当然是简化的),该缩略图指向一个新页面,然后需要单击该新页面中的链接: 但是我的代码吐出了以下错误: 问题似乎是该元素未使用新页面的内容进行更新。更换有问题的生产线的使用也不起作用。我究竟做错了什么? 请注意,我必须能够对所有缩略图执行此操作(因此需要循环)。 问题答案: 原来,您需要预先存储要导航的链接。这就是最终对我有用的东
问题似乎是没有用新页面的内容更新元素。将问题行的替换为也不起作用。我做错了什么? 请注意,我必须能够对所有缩略图执行此操作(因此使用循环)。
问题内容: 如何从一页导航到另一页。假设我有一个登录页面,在输入用户名和密码字段并单击提交按钮后,它需要验证,如果用户名和密码都正确,则需要进入主页。主页内容需要显示。我在这里发布代码。在浏览器中,URL不断变化,但内容没有变化。 index.html home.html test.js 问题答案: 正如@dfsq所说,您需要一个ng-view来放置新视图。当然,如果将ng- view添加到索引中
我在使用htmlUnit WebDriver解析HTML页面时遇到了一些问题。我没有任何例外。我的代码如下所示: 在上面的XML页面源码中,我可以找到我的名字。所以,我似乎正确地记录了它。
我在平台上开发,并安装了模板。 我想显示一个页。如果我使用属性显示,则html页面将显示在完整的窗口中,并且我无法从该属性返回。我唯一的方法是需要重新初始化应用程序。 所以,我从这里浏览了所有库及其函数http://msdn.microsoft.com/en-us/library/windows/apps/hh770584.aspx
我一直在尝试得到一堆图像像图库在我的导航栏项目片段。代码是这样的。 注意:不要与图像r.drawable.base123混淆。我只是写了3把它写短了。我已经在我的工作区设置了20个图像。