有关服务器的信息未更新

时间:2015-08-10 17:35:15

标签: java ajax httpclient htmlunit

我一直在用几个网站测试HtmlUnit;在所有这些网站中,他们都有 点击时单击按钮或复选框等元素,然后单击 该网站上的个人资料已更新;你不需要提交表格或 任何东西。但是当我采用与HtmlUnit完全相同的动作时,我的个人资料 在服务器上没有真正更新。我必须做一些特别的事吗? 例如同步HtmlUnit所具有的页面的本地副本 服务器,以便服务器看到更改?举个例子,我添加了我的 用于在私人/公共和恶习的网站上切换我的简历的代码 反之亦然。当我在浏览器上访问该页面时,我所要做的就是单击一个 两个单选按钮,使简历公共/私人;但是当我这样做的时候 在HtmlUnit上一样,然后去浏览浏览器页面查看,我可以看到服务器上的信息没有被更改。我有 包括我的代码如下。请注意,我有另一种登录方法 该网站,我知道我正确登录。鉴于这种情况正在发生 我的网站对我来说,我想也许有一些事情就像我正在做的那样与服务器同步。

=====================================

    public void update(String urlOfThePage)
    {
        // First, declare any element name or xapth that you are going to
use.        String xpathOfIsPublicRadioButton = "//input[@id='privacy_show']";
        String xpathOfIsPrivateRadioButton = "//input[@id='privacy_hide']";

        // Get the first page
        try
        {
            final HtmlPage resumePage = (HtmlPage) webclient.getPage(urlOfThePage);
            CrawlerUtility.savePage(resumePage, "resumePage");
            final HtmlRadioButtonInput makePublicRadioButton  =
(HtmlRadioButtonInput)

resumePage.getFirstByXPath(xpathOfIsPublicRadioButton);
            final HtmlRadioButtonInput makePrivateRadioButton  =
                                       (HtmlRadioButtonInput)
resumePage.getFirstByXPath(xpathOfIsPrivateRadioButton);
            Page result = null;
            if (isProfilePublic())
            {
                result = makePrivateRadioButton.click();
                System.out.println("The Profile is changed to private
now.");
                Thread.sleep(60000);
            }
            else
            {
                result = makePublicRadioButton.click();
                System.out.println("The Profile is changed to public now.");
                Thread.sleep(60000);
            }

        }
        catch (Throwable e)
        {
            e.printStackTrace();
        }//End of try/catch block.


    }//End of update().

1 个答案:

答案 0 :(得分:1)

如果您没有提交表单,那么您可能会在幕后使用AJAX将数据发送到服务器。 HTML单元不会将其发送到服务器,因为它不会处理AJAX请求。您需要的是更复杂的东西,例如Sikuli http://www.sikuli.org,它实际上会以与用户完全相同的方式点击您网页上的元素。您还可以尝试使用特定于Web浏览器的Selenium(http://www.seleniumhq.org/)。