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

如何用Python + Selenium在新标签页打开内容并切换标签页

问题解决方法

原代码存在的问题

你传入EC.element_to_be_clickable的是已找到的元素对象,但该方法需要接收定位器元组(比如(By.CLASS_NAME, "css-vurnku")),这会导致等待逻辑失效,元素可能未完全加载就被操作,进而无法触发新标签页打开。

修正方案1:修复ActionChains操作逻辑

确保等待逻辑正确,同时补充按键释放操作(避免按键一直处于按下状态):

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

# 用定位器元组等待元素可点击
link_locator = (By.CLASS_NAME, "css-vurnku")
link = WebDriverWait(driver, 30).until(EC.element_to_be_clickable(link_locator))

# 执行Ctrl+点击(Mac系统替换为Keys.COMMAND)
actions = ActionChains(driver)
actions.key_down(Keys.CONTROL).click(link).key_up(Keys.CONTROL).perform()

# 切换到新打开的标签页
driver.switch_to.window(driver.window_handles[-1])

修正方案2:用JavaScript打开新标签页(更稳定)

不受系统按键差异影响,直接通过JS打开链接,兼容性更好:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

link_locator = (By.CLASS_NAME, "css-vurnku")
link = WebDriverWait(driver, 30).until(EC.presence_of_element_located(link_locator))

# 获取活动的链接地址
activity_url = link.get_attribute("href")
# 执行JS打开新标签页
driver.execute_script(f"window.open('{activity_url}');")

# 切换到新标签页
driver.switch_to.window(driver.window_handles[-1])

额外注意事项

  • 若要遍历所有活动,建议先批量获取所有活动的href属性,再逐个打开,避免页面刷新导致元素失效(stale element异常)。
  • 确认目标元素的class名称css-vurnku是否正确,网站可能会动态更新class,需用浏览器开发者工具重新校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 11:02:45