java - HtmlUnit 等待重定向
问题描述
我有以下需要实施的场景HtmlUnit
:
-我点击按钮 -我
被重定向到页面 www.page.pl/result
-我需要等待几秒钟然后我被重定向到 www.anotherpage.pl/auth_code=qwe123
问题是,一旦我进入 /result 页面,我就无法摆脱它进入下一个页面。那里没有手动操作,我只需要等到重定向发生
这是我的WebClient
private WebClient initWebClient() {
WebClient webClient = new WebClient();
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setUseInsecureSSL(true);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setRedirectEnabled(true);
return webClient;
}
以及我是如何尝试实现这一目标的,我尝试了几种方法,包括Thread.sleep()
已经...
HtmlPage page = webClient.getPage(url);
page.getForms().get(0).getButtonByName("submit").click(); // Redirects me to /result
webClient.waitForBackgroundJavaScript(5000);
webClient.waitForBackgroundJavaScriptStartingBefore(5000);
Thread.sleep(5000);
page.refresh(); //I'm still on /result, while I need to be on completely new page by now
解决方案
如果其他人有类似的问题,我找到了解决方案
webClient.addWebWindowListener(new WebWindowListener() {
@Override
public void webWindowOpened(WebWindowEvent webWindowEvent) {
}
@Override
public void webWindowContentChanged(WebWindowEvent webWindowEvent) {
if (webWindowEvent.getNewPage() != null) {
// do what you need to do with webWindowEvent.getNewPage().getUrl();
}
}
@Override
public void webWindowClosed(WebWindowEvent webWindowEvent) {
}
});
推荐阅读
- json - Flutter - 接受 json id 值
- delphi - 接收 HEX 数字并转换为 INT 或 STRING
- php - 在 elementor 中单击按钮上调用函数
- flutter - 如何在颤动中在键盘和焦点文本字段之间添加空格?
- python-3.x - AWS Lambda python:无法导入模块“lambda_function”:没有名为“regex._regex”的模块
- excel - 当我在 excel 上打开 csv 或 excel 文件时,日期格式为 Oct 20, 2020 12:58 PM,但不将它们识别为日期。我能做些什么?
- c# - 数字格式字符串 #,#0.00 与 #,0.00
- python - 我无法使用散点图的 Python 进行线性回归以获得使用 Origin 获得的预期值
- odata - SAPUI5:ODatav4 将静态数据添加到从 API 下载的数据中
- javascript - 为什么当我点击 onclick 按钮时什么都没有发生?