Java HTMLUnit getByFirstXPath 不工作

Java HTMLUnit getByFirstXPath not working

我正在尝试使用 Java 中的 HTMLUnit 2.4 加载页面并单击 link。我试图通过 xPath 在页面上查找日历。它返回空值。 xPath 是直接从 Chrome DevTools 中复制出来的。我使用 Chrome DevTools Network 选项卡查看加载到页面的第一个资源包含我想要的数据。我认为这与 AJAX 无关。

import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlDivision;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;

import java.io.IOException;

public class App {
    public static void main( String[] args ) throws IOException {
        final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3);
        webClient.setJavaScriptEnabled(false);
        HtmlPage homePage = webClient.getPage("http://bay.realtaxdeed.com");
        webClient.setJavaScriptEnabled(true);
        HtmlDivision calendarButtonDiv = homePage.getFirstByXPath("//*[@id=\"splashMenuBottom\"]");
        HtmlPage currentMonthPage = calendarButtonDiv.click();

        HtmlElement element = currentMonthPage.getElementById("MAIN_TBL_CONTENT");
        HtmlDivision calendarDivision = currentMonthPage.getFirstByXPath("//*[@id=\"MAIN_TBL_CONTENT\"]/div[2]/div/div[11]");

        System.out.println( "Run complete." );
    }
}

我不得不禁用 javascript 以避免在着陆页上出现错误。我重新启用以尝试确保 WebClient 像普通浏览器一样运行。我通过 xpath 成功获取了 calendarButtonDiv。我单击它以获取带有日历的页面。我的目标是单击其中包含 hyperlink 的日期。

为什么我无法通过 xPath 找到日历 (calendarDivision)?使用 HTMLUnit 查找元素的正确方法是什么?

您使用的 HtmlUnit 版本已有 9 年历史。请尝试使用最新版本。通常这类问题与不同的 dom 树有关,其中许多 changes/fixes 由真正的浏览器和 HtmlUnit 完成。

下一步是从 HtmlUnit (page.asXML()) 转储页面并查看您的 XPath 是否适合。

最后,如果您认为 HtmlUnit(最新版本)生成的 dom 树与真正的浏览器不同;请打开一个问题并提供一个简单的 html 来显示问题。通常我们可以快速解决此类问题。