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

Python Selenium自动化测试:Click方法无法打开新页面问题

解决Selenium Click无法打开新页面的问题

先看你代码里的明显错误:

  • 变量名写错了:drive.webdriver.Chrome应该改成driver = webdriver.Chrome,不然会直接报错找不到driver变量。

接下来针对Click没打开新页面的问题,给你几个排查和解决方向:

1. 确认元素定位是否正确

先检查stylesheet1这个ID对应的元素是不是真正的可点击链接(比如<a>标签)。如果是<div>、<span>这类非链接元素,可能本身就不是用来打开新页面的,或者需要触发特定JS事件才能跳转。

可以先打印元素信息确认:

element = driver.find_element(By.ID,"stylesheet1")
print(element.tag_name)
print(element.get_attribute("target"))

如果是<a>标签且带有target="_blank"属性,点击后应该会打开新窗口;如果没有target属性,点击会在当前窗口跳转。

2. 等待元素加载完成

页面可能还没完全加载就执行了点击,导致元素处于不可交互状态。用显式等待代替time.sleep(),更可靠:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待元素可点击,最多等10秒
wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.ID, "stylesheet1")))
element.click()

3. 切换到新窗口

如果点击成功但Selenium仍停留在原窗口,需要手动切换窗口句柄:

# 点击前先记录原窗口句柄
original_window = driver.current_window_handle
element.click()

# 等待新窗口出现,切换过去
wait.until(EC.number_of_windows_to_be(2))
for window_handle in driver.window_handles:
    if window_handle != original_window:
        driver.switch_to.window(window_handle)
        break

# 现在可以操作新窗口了
print(driver.title)

4. 检查浏览器驱动兼容性

ChromeDriver版本必须和你安装的Chrome浏览器版本完全匹配,版本不匹配会导致各种交互异常,去对应官网下载同版本驱动即可。

最后给你修正后的完整代码:

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

# 修正变量名错误
driver = webdriver.Chrome(executable_path=r"C:\Users\mvintee\project_for_selenium\chromedriver_win32\chromedriver.exe")
driver.get("https://www.verio.com/")
print("原窗口标题:", driver.title)

# 等待元素可点击并执行点击
wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.ID, "stylesheet1")))
original_window = driver.current_window_handle
element.click()

# 切换到新窗口
wait.until(EC.number_of_windows_to_be(2))
for handle in driver.window_handles:
    if handle != original_window:
        driver.switch_to.window(handle)
        break

print("新窗口标题:", driver.title)

# 测试完成后关闭浏览器
driver.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 09:54:20