如何使用 HtmlUnit 在 aspx 站点中单击超文本链接

Posted

技术标签:

【中文标题】如何使用 HtmlUnit 在 aspx 站点中单击超文本链接【英文标题】:How to click hypertext link in aspx site with HtmlUnit 【发布时间】:2015-12-19 18:38:30 【问题描述】:

我正在开发一个 apsx 网站。我找不到用 htmlUnit 点击表格内链接的方法。 我已经尝试了很多方法,但我得到了“ItemNotFound”异常或“NullPointerException”。

这是我的代码:

public static void selezionaConto(HtmlPage page, int nConto) throws Exception 
    try (final WebClient webClient = new WebClient(BrowserVersion.CHROME)) 
    
        webClient.getOptions().setThrowExceptionOnScriptError(false);
        final HtmlPage currentPage = page; 

        nConto = 5;

        switch (nConto)    
            case 1:

                break;

            case 2:

                break;

            case 3:

                break;

            case 4:

                break;

            case 5:

                HtmlAnchor nextLink = currentPage.getFirstByXPath("//a[@id='lnkQuintoConto']");
                HtmlPage newPage = nextLink.click();
                System.out.println(newPage.asXml());

                break;
            
        
    

【问题讨论】:

请提供您的完整案例(附网址),以便其他人可以重现该问题。 我发现很难添加 HTML 代码的图像,因为我没有足够的声誉。无法为您提供 URL,因为它涉及提供明智的信息,但我正在努力弄清楚我的问题到底是什么:当我在代码中查找特定的 href 时,程序找不到它,那是因为它似乎根本不是 HTML 代码的一部分。我注意到通过在屏幕上打印 asXml() 方法检测到的所有代码。它仅显示代码的初始部分,然后以 【参考方案1】:

你应该这样做:

        currentPage.getFirstByXPath("//a[@class='SelezDecretoButton']");

        currentPage.getFirstByXPath("//a[@id='lnkQuintoConto']");

        currentPage.getAnchorByHref(complere_href)

XPath 的意思是:从根//,递归选择子级,a@id@class 属性whatever

【讨论】:

我在主帖中编辑了代码。现在我得到了这个异常:线程“main”中的异常 java.lang.NullPointerException 你能发布currentPage.asXml()的值吗?这就是 HtmlUnit 所看到的 对不起,因为它很长,所以不得不在不同的答案中发布它! :) 因为我没有在主帖中发布整个 HTML,所以 asXml() 给我的是所有源代码的 HTML 代码,直到绿色文本。不显示绿色文字之后的内容。

以上是关于如何使用 HtmlUnit 在 aspx 站点中单击超文本链接的主要内容,如果未能解决你的问题,请参考以下文章

将 2 个简单的 aspx 页面添加到 Sharepoint 站点定义

Java和HTMLUnit:如何点击提交按钮?

尝试使用 CURL 连接到 ASPX 站点?

Java 和 HTMLUnit:如何点击提交按钮?

Spring中如何配置重试HtmlUnit请求的次数?

从 ASPX 站点使用 AJAX 检索 XML 数据