Java 无法使用htmlunit单击google地图页面上的链接

Java 无法使用htmlunit单击google地图页面上的链接,java,eclipse,google-maps,servlets,htmlunit,Java,Eclipse,Google Maps,Servlets,Htmlunit,目前,我正试图用htmlunit控制google map JP。 以下是谷歌地图JP。 在我的浏览器中,左侧的旧式视图中有一个菜单,它在我点击地区名称后显示城市名称。我想使用htmlunit执行相同的操作,但没有任何更改。 请给我一些想法,并帮助我使用servlet atm package com.example.part1; import java.util.List; import java.io.IOException; import javax.servlet.ServletExcep

目前,我正试图用htmlunit控制google map JP。 以下是谷歌地图JP。 在我的浏览器中,左侧的旧式视图中有一个菜单,它在我点击地区名称后显示城市名称。我想使用htmlunit执行相同的操作,但没有任何更改。 请给我一些想法,并帮助我使用servlet atm

package com.example.part1;

import java.util.List;
import java.io.IOException;
import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;


@WebServlet(“/test")

public class test extends HttpServlet {

private static final long serialVersionUID = 1L;



    public test() {

        super();

        // TODO Auto-generated constructor stub

    }


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(java.util.logging.Level.OFF);

response.setContentType("text/html; charset=Windows-31J");
final WebClient webClient = new WebClient(BrowserVersion.CHROME, "198.23.143.27", 5555);
        webClient.getOptions().setThrowExceptionOnScriptError(false);
        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
        webClient.getOptions().setJavaScriptEnabled(true);
        webClient.getOptions().setRedirectEnabled(true);
        webClient.getCookieManager().setCookiesEnabled(true);
        webClient.setAjaxController(new NicelyResynchronizingAjaxController());
        HtmlPage page1 = webClient.getPage("https://maps.google.co.jp/");        

        List<HtmlAnchor> links = (List<HtmlAnchor>) page1.getByXPath("//a[@href='javascript:void(0)']");


        //click 北海道
        links.get(12).click();

        webClient.waitForBackgroundJavaScript(10000);
        response.getWriter().write(page1.getWebResponse().getContentAsString());

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

}
}
给你

欢迎任何意见。 提前谢谢

编辑 仍在寻找解决方案

单击锚定时,将结果保存在HtmlPage中,如下所示:

page1  = links.get(12).click();
添加了类来点击按钮,还添加了我点击后收到的页面截图

import java.io.FileWriter;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.List;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
import com.gargoylesoftware.htmlunit.html.HtmlPage;

public class Test {

    public static void main(String[] args) throws FailingHttpStatusCodeException, MalformedURLException, IOException {
        final WebClient webClient = new WebClient(BrowserVersion.CHROME);
        webClient.getOptions().setThrowExceptionOnScriptError(false);
        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
        webClient.waitForBackgroundJavaScript(10000);
        webClient.getOptions().setJavaScriptEnabled(true);
        webClient.getOptions().setRedirectEnabled(true);
        webClient.getCookieManager().setCookiesEnabled(true);
        webClient.setAjaxController(new NicelyResynchronizingAjaxController());
        HtmlPage page = webClient.getPage("https://maps.google.co.jp/");        

        List<HtmlAnchor> links = (List<HtmlAnchor>) page.getByXPath("//a[@href='javascript:void(0)']");

        page = links.get(12).click();

        FileWriter writer = new FileWriter("d:\\test.html"); //To write page in file
        writer.write(page.asXml());
    }
}

r您确定列表中的元素12位于您要单击的相应锚点中??谢谢您的评论。是的。我非常确定元素12是正确的。它显示“北海道,如果您有任何想法,请帮助我…@user3348619我已经在我的系统上进行了测试,通过对代码进行上述更改,它可以正常工作。您还可以使用asXml方法查看pageHi Niks。我尝试了“page1=links.get12.click;”和page1.asXml”。但它在单击之前显示完全相同。如果可能,您可以粘贴您测试的代码吗?提前谢谢。@user3348619我已经添加了代码并粘贴了单击后收到的图像。Sry,可能我的解释不太好。嗯…通常谷歌JP会在点击地区名称后显示城市名称。单击“州名称”后,其名称将消失,或者显示其城市名称或城市名称列表。看看图片的左侧。然后,用我们的代码,它仍然显示州名,没有城市名,与不点击相比没有任何变化。请看图片的右边,谢谢。