当前位置: 首页 > news >正文

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

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

 

// 设置极短的页面加载超时(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');"
);

 

http://www.lryc.cn/news/590922.html

相关文章:

  • AWS Lambda 最佳实践:构建高效无服务器应用的完整指南
  • Kubernetes ConfigMap 深度指南
  • 大模型Agent应用开发实战:从框架选型到行业落地
  • ros2 标定相机
  • 三轴云台之测距算法篇
  • 《C++初阶之STL》【auto关键字 + 范围for循环 + 迭代器】
  • 【Dv3Admin】菜单管理集成阿里巴巴自定义矢量图标库
  • 大型语言模型(LLM)在网络安全中最具商业价值的应用场景(Grok3 回答 DeepSearch模式)
  • Python包测试全攻略:从单元测试到持续集成
  • sqli-labs靶场通关笔记:第24关 二次注入
  • LiteSQL:让C++与数据库无缝对接的ORM利器
  • 河南萌新联赛2025第一场-河南工业大学
  • Redis面试相关问题总结
  • string + 栈 bitset 可达性统计(拓扑排序)
  • Redis深度解析:从缓存原理到高并发实战
  • Go语言高并发聊天室(三):性能优化与压力测试
  • 防火墙准入与拦截技术文档
  • Qt初阶开发:QMediaPlayer的介绍和使用
  • 杭州卓健信息科技有限公司 Java 面经
  • iOS App 电池消耗管理与优化 提升用户体验的完整指南
  • 暑期算法训练.3
  • 基于 Electron + Vue 3 的桌面小说写作软件架构设计
  • Python应用指南:使用PyKrige包实现ArcGIS的克里金插值法
  • Kubernetes (k8s)环境重启Pod方式总结
  • Perspective:一款开源的交互式分析和数据可视化组件
  • 独家|理想汽车放弃华为PBC模式,回归OKR理想汽车
  • 算法竞赛备赛——【图论】求最短路径——Dijkstra
  • 【软件开发】主流 AI 编码插件
  • 《Oracle SQL:使用 RTRIM 和 TO_CHAR 函数格式化数字并移除多余小数点》
  • AI培训学习3-AI数据分析产品