首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTMLUnit Java太旧的浏览器

HTMLUnit Java太旧的浏览器
EN

Stack Overflow用户
提问于 2017-01-23 00:20:24
回答 1查看 506关注 0票数 0

我正在尝试编写一个自动更新页面内容的应用程序(在我的帐户内)。我使用HTMLUnit是因为它支持javascript。但是我遇到了“你的浏览器太旧了”的问题。

我的代码:

代码语言:javascript
复制
public static void main(String[] args) {
        Locale.setDefault(Locale.ENGLISH);
        try (final WebClient client = new WebClient(BrowserVersion.FIREFOX_45)) {
            client.getOptions().setUseInsecureSSL(true);
            client.setAjaxController(new NicelyResynchronizingAjaxController());
            client.getOptions().setThrowExceptionOnFailingStatusCode(false);
            client.getOptions().setThrowExceptionOnScriptError(false);
            client.waitForBackgroundJavaScript(30000);
            client.waitForBackgroundJavaScriptStartingBefore(30000);
            client.getOptions().setCssEnabled(false);
            client.getOptions().setJavaScriptEnabled(true);
            client.getOptions().setRedirectEnabled(true);

            HtmlPage page = client.getPage("https://passport.yandex.ru/passport?mode=auth&retpath=https://toloka.yandex.ru/?ncrnd=5645");

            HtmlForm form = page.getForms().get(0);

            HtmlInput inputLogin = form.getInputByName("login");

            inputLogin.setValueAttribute(userName);
            HtmlInput inputPassw = form.getInputByName("passwd");

            inputPassw.setValueAttribute(password);

            DomElement button = page.getElementsByTagName("button").get(0);
            HtmlPage page2 = button.click();

            System.out.println(page2.asXml());
        }
        catch (IOException e) {

        }
    }

登录成功,但无法加载第二个页面。(应重定向到内容页)

答案:

代码语言:javascript
复制
<h1 style="padding-top: 20px;">Browser is too old</h1>
    <p>
        Unfortunately you are using an old browser.
        Please, upgrade to at least IE10 or use one of the modern browsers, e.g.
        <a href="http://browser.yandex.net/">Yandex.Browser</a>,
        <a href="https://www.google.com/chrome/browser/">Google Chrome</a> or
        <a href="https://www.mozilla.org/firefox/new/">Mozilla Firefox</a>
    </p>

我该怎么解决它呢?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-01-23 01:28:43

你的问题没有简单的解决方案,但你可以做一些事情。

  1. 使用HtmlUnit (http://htmlunit.sourceforge.net/gettingLatestCode.html)的最新快照版本并尝试使用不同的模拟浏览器(例如,chrome)
  2. cleanup您的客户端设置,仅设置所需的选项)(在您的情况下,setUseInsecureSSL(true);
  3. waitForBackgroundJavaScript和waitForBackgroundJavaScriptStartingBefore可能不是选项;在客户端设置时执行此操作无用
  4. 检查您的日志;可能有一些关于

不支持的javascript方法的提示

在按钮点击之后调用waitForBackgroundJavaScript;也许重定向是由一些javascript完成的,只有很小的延迟。

代码语言:javascript
复制
HtmlPage page2 = button.click();
client.waitForBackgroundJavaScript(30000);

因为javascript可能已经更改了页面内容,所以您必须再次获取页面内容。

代码语言:javascript
复制
page2 = page2.getEnclosingWindow().getEnclosedPage();

通常,对浏览器版本的检查是由一些javascript魔法完成的。也许你的网站使用的魔术并不(正确地)被HtmlUnit支持/模仿。如果你能找到这个问题的根本原因,你就可以补上一个bug (有关如何找到这个问题的一些提示,请参阅http://htmlunit.sourceforge.net/submittingJSBugs.html )。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41793267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档