如何在仅允许按钮点击跳转的网站用Selenium新标签打开myURL
解决方法
一、在Chrome开发者工具中定位阻止跳转的函数
- 打开Chrome开发者工具(按
F12或右键页面选择「检查」) - 在Elements面板中找到目标
<a>标签 - 切换到Event Listeners面板,在搜索框输入
click,查看该元素及其父元素绑定的点击事件处理器 - 点击每个事件处理器右侧的链接,跳转到Sources面板查看函数代码,重点排查是否有
e.preventDefault()、return false这类阻止默认跳转行为的代码 - 也可在Console面板执行以下代码,点击元素时触发断点追踪调用栈:
执行后点击目标元素,会自动进入断点,通过Call Stack查看触发的函数链。$0.addEventListener('click', function(e) { debugger; }, true);
二、用Selenium在新标签打开目标链接
方法1:通过JavaScript直接打开新标签
该方法会携带当前会话的Cookie,避免被重定向:
from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("你的网页URL") # 定位目标a元素 target_link = driver.find_element(By.CSS_SELECTOR, 'a[href="myURL"]') # 获取链接地址 link_url = target_link.get_attribute('href') # 执行JS打开新标签 driver.execute_script(f"window.open('{link_url}', '_blank');") # 切换到新标签页(可选操作) driver.switch_to.window(driver.window_handles[1])
方法2:模拟右键菜单选择「在新标签打开」
模拟真实用户交互流程:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome() driver.get("你的网页URL") target_link = driver.find_element(By.CSS_SELECTOR, 'a[href="myURL"]') # 构建动作链 actions = ActionChains(driver) # 右键点击元素,按向下箭头选择「在新标签打开」后回车确认 actions.context_click(target_link).send_keys(Keys.ARROW_DOWN).send_keys(Keys.ENTER).perform()
内容的提问来源于stack exchange,提问作者banana
相关产品推荐
相关产品推荐

