gpt4 book ai didi

java - HTMLUnit Java 浏览器太旧

转载 作者:行者123 更新时间:2023-12-01 08:59:35 24 4
gpt4 key购买 nike

我正在尝试编写一个自动更新页面内容的应用程序(在我的帐户内)。我使用 HTMLUnit 因为它支持 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) {

}
}

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

答案:

<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>

如何解决?谢谢。

最佳答案

您的问题没有简单的解决方案,但您可以采取一些措施。

  1. 使用 HtmlUnit 的最新快照版本 ( http://htmlunit.sourceforge.net/gettingLatestCode.html )
  2. 尝试使用不同的模拟浏览器(例如 Chrome)
  3. 清理您的客户端设置,仅设置所需的选项(在您的情况下可能是 setUseInsecureSSL(true);
  4. waitForBackgroundJavaScript 和 waitForBackgroundJavaScriptStartingBefore 没有选项;在客户端设置中这样做是没有用的
  5. 检查您的日志;也许有一些关于不支持的 JavaScript 方法的提示

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

HtmlPage page2 = button.click();
client.waitForBackgroundJavaScript(30000);

并且由于 javascript 可能更改了页面内容,因此您必须再次获取页面内容。

page2 = page2.getEnclosingWindow().getEnclosedPage();

通常,浏览器版本的检查是通过一些 JavaScript 魔法来完成的。也许 HtmlUnit 不(正确)支持/模拟您的网站使用的魔术。如果您能够找出此问题的根本原因,则可以填补错误(请参阅 http://htmlunit.sourceforge.net/submittingJSBugs.html 了解如何找到此问题的一些提示)。

关于java - HTMLUnit Java 浏览器太旧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41793267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com