
本文介绍了一种使用 Selenium 获取由 JavaScript 代码触发的重定向 URL,同时保持在当前页面不跳转的方法。通过修改 JavaScript 代码,将目标 URL 存储到全局变量中,然后使用 Selenium 获取该变量,从而避免页面跳转。该方法适用于按钮触发复杂 JavaScript 函数的情况,绕过直接点击按钮导致页面重定向的问题。
在 Web 自动化测试中,经常会遇到点击按钮后由 JavaScript 代码触发页面重定向的情况。直接使用 driver.current_url 获取 URL 会导致页面跳转,这在某些场景下是不可接受的,例如需要在当前页面继续执行其他操作。本文提供了一种解决方案,通过修改 JavaScript 代码,在不跳转页面的情况下获取目标 URL。
核心思路:
具体步骤:
立即学习“Java免费学习笔记(深入)”;
步骤 1:定位 JavaScript 代码
首先需要找到负责重定向的 JavaScript 代码。Chrome 开发者工具提供了强大的调试功能,可以帮助我们定位代码。
步骤 2:修改 JavaScript 代码
找到负责重定向的代码后,需要修改它,阻止页面跳转,并将目标 URL 存储到全局变量 target_url 中。
例如,如果 JavaScript 代码如下:
window.location.href = "https://www.example.com/new_page";
可以修改为:
target_url = "https://www.example.com/new_page"; // window.location.href = "https://www.example.com/new_page"; // 注释掉重定向的代码
步骤 3:使用 Resource Override 扩展自动修改 JavaScript 代码
手动修改 JavaScript 代码比较繁琐,可以使用 Chrome 扩展 Resource Override 来自动完成。
Resource Override 允许我们拦截特定的网络请求,并使用本地文件替换响应内容。
步骤 4:Selenium 获取 URL
在 Selenium 中,可以使用 driver.execute_script() 方法执行 JavaScript 代码,并获取全局变量 target_url 的值。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("your_website_url")
# 点击按钮 (假设按钮的 id 是 "my_button")
button = driver.find_element("id", "my_button")
button.click()
# 获取 target_url 的值
my_target_url = driver.execute_script("return target_url;")
print(my_target_url)
driver.quit()注意事项:
总结:
通过修改 JavaScript 代码,我们可以绕过页面重定向,在不改变当前页面的情况下获取目标 URL。这种方法适用于按钮触发复杂 JavaScript 函数的场景,为 Web 自动化测试提供了更大的灵活性。使用 Resource Override 扩展可以自动化修改 JavaScript 代码,提高效率。
以上就是获取 JavaScript 重定向的 URL 而不改变当前页面的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号