要实现在调用 driver.get() 后立即阻止页面自动跳转到 Azure 登录页,可通过以下几种方法实现:

发布于:2025-07-19 ⋅ 阅读:(15) ⋅ 点赞:(0)

方法一:立即停止页面加载(核心方案)

 

// 设置极短的页面加载超时(1毫秒)
driver.manage().timeouts().pageLoadTimeout(1, TimeUnit.MILLISECONDS); 

try {
    driver.get("https://your-target-url.com"); // 触发导航
} catch (TimeoutException ignore) {
    // 忽略超时异常,此时页面加载已被中断
    ((JavascriptExecutor) driver).executeScript("window.stop();"); // 强制停止加载
}
 

方法二:拦截网络请求(Chrome DevTools)

import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.v85.network.Network;

DevTools devTools = ((ChromeDriver) driver).getDevTools();
devTools.createSession();

// 启用网络拦截
devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));

// 添加请求拦截器
devTools.addListener(Network.requestWillBeSent(), request -> {
    // 检测到跳转到Azure登录页时立即阻止
    if (request.getRequest().getUrl().contains("login.microsoftonline.com")) {
        devTools.send(Network.disable()); // 立即禁用网络
    }
});

driver.get("https://your-target-url.com"); // 触发导航
 

方法三:修改浏览器配置(禁止重定向)

ChromeOptions options = new ChromeOptions();

// 方案A: 阻止所有重定向
options.setExperimentalOption("prefs", Map.of(
    "profile.managed_default_content_settings.javascript", 2  // 禁用JS执行
));

// 方案B: 安装拦截扩展 (需提前准备crx文件)
.addExtensions(new File("/path/to/redirect-blocker.crx")); 

WebDriver driver = new ChromeDriver(options);
driver.get("https://your-target-url.com");
 

方法五:JavaScript 注入阻止跳转

((JavascriptExecutor)driver).executeScript(
    "window.onbeforeunload = function() { return 'Stop navigation?'; };" +
    "window.addEventListener('beforeunload', (e) => e.preventDefault());"
);

driver.get("https://your-target-url.com");

// 后续移除拦截器
((JavascriptExecutor)driver).executeScript(
    "window.onbeforeunload = null;" +
    "window.removeEventListener('beforeunload');"
);
 

 


网站公告

今日签到

点亮在社区的每一天
去签到