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

如何使用Python Selenium WebDriver验证网页文本中的指定子串

需求描述

使用Python Selenium WebDriver对网页返回的指定文本内容进行校验:

  • 待校验的返回文本格式示例:+FCIN:~|210920145516|1|0|0000,0000|~
  • 核心校验规则:验证指定位置是否为|0|,该位置偶发异常返回|1|,需要识别这类异常情况
  • 现有逻辑是从Excel读取设备ID,拼接请求地址后获取返回结果做校验
现有代码的问题
  1. 采用全量文本精准匹配的逻辑不合理:如果文本中其他字段(比如时间戳、设备标识)有合法变动,会触发误报
  2. 存在大量未使用的冗余导入包,增加不必要的依赖
  3. 使用了Selenium高版本已弃用的find_element_by_tag_name方法,运行会触发警告甚至报错
  4. 没有异常捕获逻辑,元素加载失败、网络超时等情况会直接导致程序中断
优化后代码
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException, TimeoutException
import openpyxl
import time

# 初始化浏览器
chrome_options = webdriver.ChromeOptions()
web = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)
web.maximize_window()
# 全局隐式等待,避免元素未加载就执行操作
web.implicitly_wait(5)

# 读取Excel文件
excel_document = openpyxl.load_workbook(r"C:\Users\Sagar\Documents\validation.xlsx", data_only=True)
sheet = excel_document["Sheet1"]
base_url = "http://ts.vcccms.in/GwaliorMeterAPI/api/DeviceSchedule/DeviceScheduleInfo?DeviceID=2|"

for i in range(2, sheet.max_row+1):
    cell_value = sheet[f"A{i}"].value
    try:
        # 发起请求
        web.get(base_url + str(cell_value))
        time.sleep(2)
        # 获取返回文本
        element = web.find_element(By.TAG_NAME, "pre")
        res_text = element.text.strip()
        
        # 校验逻辑:拆分字段精准校验第四段(竖线分隔索引为3)的值
        text_parts = res_text.split("|")
        if len(text_parts) >=4 and text_parts[3] == "0":
            print(f"设备ID {cell_value} 校验通过,返回值:{res_text}")
        else:
            print(f"设备ID {cell_value} 校验失败,异常返回:{res_text},指定位置值为{text_parts[3] if len(text_parts)>=4 else '格式错误'}")
    except (NoSuchElementException, TimeoutException) as e:
        print(f"设备ID {cell_value} 请求/解析异常:{str(e)}")
    finally:
        web.back()

# 关闭浏览器
web.quit()
核心优化说明
  • 校验逻辑改为按竖线拆分文本后精准校验指定位置的值,既避免了其他位置出现|0|导致的误判,也不会因为其他合法字段变动触发误报
  • 增加了异常捕获逻辑,单条数据校验失败不会中断整个测试流程
  • 适配了Selenium高版本的元素查找语法,消除弃用警告
  • 清理了所有未使用的冗余导入,降低运行依赖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:09:02