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

Python3.9+Selenium4.0.0如何检测页面文本不存在时跳转新网站

问题根因分析
  1. 未做元素存在性捕获:Selenium的driver.find_element()方法如果匹配不到对应元素会直接抛出NoSuchElementException异常,终止程序运行,这就是你打开第一个网站就停止的核心原因,根本不会执行后续的else分支和新标签打开逻辑。
  2. if判断逻辑错误:click()方法是无返回值的,所以driver.find_element(...).click() is True的判断结果永远为False,就算成功定位到元素并点击,也不会进入你写的填账号密码的分支。
  3. 业务逻辑不匹配:你的需求是「提示文本不存在时打开新标签跳转」,你现有代码里打开新标签的逻辑是写在if/else之外的,不管判断结果都会执行,不符合需求。
修复方案
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
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.maximize_window()
driver.get('https://你要访问的第一个网站.com')

# 最多等待3秒判断元素是否存在,避免页面未加载完成误判
try:
    prompt_element = WebDriverWait(driver, 3).until(
        EC.presence_of_element_located((By.XPATH, '//*[@id="outside"]/div[4]/div/p[contains(text(), "Please enter your Username and Password to continue.")]'))
    )
    # 元素存在,执行点击、登录逻辑
    prompt_element.click()
    loginBox = driver.find_element(By.XPATH, '//input[@id="username"]') 
    loginBox.send_keys("username") 
    password = driver.find_element(By.XPATH, '//input[@type = "password"]')
    password.send_keys("password")
except:
    # 元素不存在(超时/找不到),执行打开新标签跳转逻辑
    driver.execute_script("window.open('about:blank','secondtab');")
    driver.switch_to.window("secondtab")
    driver.get("https://你要跳转的第二个网站.com")

改动说明

  • 用显式等待+异常捕获的方式处理元素查找逻辑,找不到元素不会终止程序,会自动进入异常分支执行新标签打开逻辑
  • 移除了错误的click() is True判断,定位到元素后直接执行点击、填表单操作
  • 把新标签跳转逻辑放到了元素不存在的异常分支里,完全匹配你的业务需求
  • 增加了3秒的等待时间,适配页面加载延迟的场景,避免元素已经存在但还没渲染完成就被判定为不存在的误判情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:15:03