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

Selenium中driver.find_element_by_xpath未找到元素时如何跳过执行其他逻辑

Selenium元素不存在时跳过执行的实现方案

核心逻辑是捕获Selenium查找元素失败时抛出的NoSuchElementException异常,在异常分支执行备选逻辑即可,具体修改步骤如下:

  1. 首先导入Selenium的元素未找到异常类
from selenium.common.exceptions import NoSuchElementException
  1. 初始化driver后添加隐式等待,避免页面未加载完成导致的元素查找误判
    隐式等待会作用于所有元素查找逻辑,最长等待设置的时长,元素提前加载完成就会直接向下执行:
driver = webdriver.Chrome()
driver.implicitly_wait(10) # 单位为秒,可根据页面加载速度调整
driver.get('https://www.target.com/p/plusone-waterproof-rechargeable-dual-vibrating-massager/-/A-76150669#lnk=sametab')
  1. 使用try-except结构实现分支逻辑
try:
    # 先尝试查找并点击ship元素
    ship = driver.find_element_by_xpath('//*[@id="viewport"]/div[4]/div/div[2]/div[3]/div[1]/div/div[3]/div[1]/div[2]/button')
    ship.click()
except NoSuchElementException:
    # 未找到ship元素时,执行addtoCart点击逻辑
    addtoCart = driver.find_element_by_xpath('//*[@id="addToCartButtonOrTextIdFor76150669"]')
    addtoCart.click()

time.sleep(2)
cart = driver.get('https://www.target.com/cart')

完整修改后代码

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
import time

# 初始化driver并配置隐式等待
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get('https://www.target.com/p/plusone-waterproof-rechargeable-dual-vibrating-massager/-/A-76150669#lnk=sametab')

# 分支执行逻辑
try:
    ship = driver.find_element_by_xpath('//*[@id="viewport"]/div[4]/div/div[2]/div[3]/div[1]/div/div[3]/div[1]/div[2]/button')
    ship.click()
except NoSuchElementException:
    addtoCart = driver.find_element_by_xpath('//*[@id="addToCartButtonOrTextIdFor76150669"]')
    addtoCart.click()

time.sleep(2)
cart = driver.get('https://www.target.com/cart')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:18:02