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

Python Selenium如何实现满足指定文本条件时点击Co-assinar按钮

Python + Selenium 实现指定文本存在时才点击按钮的方案

核心逻辑分两步:先校验目标文本是否真实存在于页面,校验通过后再定位对应按钮执行点击,全程加异常捕获避免脚本因为元素未加载直接崩溃。

具体实现代码

首先确保你已经初始化好Selenium的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 selenium.common.exceptions import NoSuchElementException, TimeoutException

# 以下为业务逻辑部分
target_marker_text = "Segue a certidão..."
co_sign_btn_text = "Co-assinar"
is_target_text_exist = False

# 第一步:检测目标标记文本是否存在
try:
    # 用normalize-space处理文本前后的空格、换行,避免页面排版空白导致匹配失败
    driver.find_element(
        By.XPATH,
        f"//*[contains(normalize-space(string()), '{target_marker_text}')]"
    )
    is_target_text_exist = True
except NoSuchElementException:
    is_target_text_exist = False

# 第二步:仅当文本存在时,执行按钮点击
if is_target_text_exist:
    try:
        # 加显式等待,最多等10秒直到按钮可点击,解决元素加载时序问题
        co_sign_button = WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable(
                (By.XPATH, f"//*[self::button or self::a][normalize-space(text())='{co_sign_btn_text}']")
            )
        )
        co_sign_button.click()
    except TimeoutException:
        print("已检测到标记文本,但等待10秒后Co-assinar按钮仍不可点击")
else:
    print("页面未找到指定标记文本,跳过点击操作")

注意事项

  • 上述XPath里用string()代替直接取text(),可以覆盖目标文本嵌套在子标签里的场景,匹配兼容性更好。
  • 按钮定位兼容了button标签、a标签做按钮的场景,如果你的页面里按钮是其他标签,可以自行调整XPath里的标签匹配规则。
  • 如果页面存在多个同名文本/按钮,可以把查找范围缩小到对应的内容容器,比如先定位到正文区域的DOM节点,再在这个节点的子元素里做查找,避免误匹配到侧边栏、弹窗里的无关元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:00:54