You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium click()触发__doPostBack为何在新标签页打开页面?

解决Selenium点击__doPostBack链接新开标签页的问题

你遇到的这种ASP.NET页面__doPostBack链接在Selenium点击时新开标签页,但手动点击正常的情况,大概率是自动化环境下的点击行为触发了页面特殊的事件逻辑,试试下面这些解决办法:

1. 直接调用__doPostBack函数

跳过元素点击环节,直接执行页面的__doPostBack JavaScript代码,这是最稳妥的方式,完全模拟页面原本的逻辑:

# 先确保页面已加载完成,__doPostBack函数可用
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, case_num)))
# 执行对应的__doPostBack调用
driver.execute_script("__doPostBack('ctl00$ContentPlaceHolder1$SearchResults','openDetails$0')")

2. 用ActionChains模拟真实鼠标点击

有时候Selenium的click()方法和真实鼠标点击的触发逻辑有差异,试试用ActionChains模拟原生左键点击:

from selenium.webdriver.common.action_chains import ActionChains

# 等待元素可点击
element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, case_num)))
# 模拟鼠标移动到元素上再点击
ActionChains(driver).move_to_element(element).click().perform()

3. 移除元素的异常事件监听

部分页面会给链接绑定全局点击事件,在自动化环境下篡改了打开方式,可以先移除元素的点击事件再点击:

element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, case_num)))
# 清除元素的onclick事件
driver.execute_script("arguments[0].onclick = null;", element)
element.click()

额外排查小技巧

  • 把等待条件从presence_of_element_located换成element_to_be_clickable,确保元素真正可以交互后再点击
  • 检查Selenium启动的浏览器配置,有没有默认设置“在新标签页打开链接”

内容的提问来源于stack exchange,提问作者Divia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 02:22:53