
本文介绍了一种使用 Selenium 获取由 JavaScript 代码触发的重定向 URL,同时保持在当前页面不跳转的方法。通过修改 JavaScript 代码,将目标 URL 存储到全局变量中,然后使用 Selenium 获取该变量,从而避免页面跳转。该方法适用于按钮触发复杂 JavaScript 函数的情况,绕过直接点击按钮导致页面重定向的问题。
在 Web 自动化测试中,经常会遇到点击按钮后由 JavaScript 代码触发页面重定向的情况。直接使用 driver.current_url 获取 URL 会导致页面跳转,这在某些场景下是不可接受的,例如需要在当前页面继续执行其他操作。本文提供了一种解决方案,通过修改 JavaScript 代码,在不跳转页面的情况下获取目标 URL。
核心思路:
定位导致重定向的 JavaScript 代码。修改 JavaScript 代码,阻止重定向,并将目标 URL 存储到全局变量。使用 Selenium 执行 JavaScript 代码,获取全局变量中的 URL。
具体步骤:
立即学习“Java免费学习笔记(深入)”;
步骤 1:定位 JavaScript 代码
首先需要找到负责重定向的 JavaScript 代码。Chrome 开发者工具提供了强大的调试功能,可以帮助我们定位代码。
打开 Chrome 开发者工具 (F12)。切换到 “Sources” (或 “源代码”) 标签。使用 Event Listener Breakpoints 功能。在 “Event Listener Breakpoints” 面板中,展开 “Script” (或 “脚本”),勾选 “click” 事件。点击页面上的目标按钮。开发者工具会自动在 JavaScript 代码中暂停,方便我们逐步调试,找到负责重定向的代码。 还可以添加 Event Listener Breakpoints for the load event。
步骤 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 允许我们拦截特定的网络请求,并使用本地文件替换响应内容。
安装 Resource Override 扩展。配置 Resource Override,拦截包含重定向代码的 JavaScript 文件。使用修改后的 JavaScript 文件替换原始文件。
步骤 4:Selenium 获取 URL
在 Selenium 中,可以使用 driver.execute_script() 方法执行 JavaScript 代码,并获取全局变量 target_url 的值。
from selenium import webdriverdriver = 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()
注意事项:
确保在执行 driver.execute_script() 之前,JavaScript 代码已经执行完毕,并且 target_url 已经被赋值。如果 JavaScript 代码中使用了异步操作,需要等待异步操作完成后再获取 target_url 的值。如果页面上存在多个按钮触发 JavaScript 重定向,需要为每个按钮设置不同的全局变量名,例如 target_url1、target_url2 等。
总结:
通过修改 JavaScript 代码,我们可以绕过页面重定向,在不改变当前页面的情况下获取目标 URL。这种方法适用于按钮触发复杂 JavaScript 函数的场景,为 Web 自动化测试提供了更大的灵活性。使用 Resource Override 扩展可以自动化修改 JavaScript 代码,提高效率。
以上就是获取 JavaScript 重定向的 URL 而不改变当前页面的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1531294.html
微信扫一扫
支付宝扫一扫