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

如何使用Python Selenium开发公司及员工豁免记录查询功能

功能实现方案

前置依赖

  • 安装所需库:
pip install selenium webdriver-manager
  • 如果你已经自行下载了ChromeDriver,可以不用安装webdriver-manager,直接使用你原有代码的driver初始化逻辑即可。

完整代码实现

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 selenium.common.exceptions import TimeoutException

# 若使用自定义ChromeDriver路径,可替换为你原有写法,此处用webdriver-manager自动管理驱动
driver = webdriver.Chrome()

def owner_exemption(company_name, employer_first_name, employer_last_name):
    # 1. 访问目标站点
    driver.get("https://dwcdataportal.fldfs.com/Exemption.aspx")
    wait = WebDriverWait(driver, 10) # 设置10秒显式等待,避免元素未加载导致报错
    
    try:
        # 2. 定位对应输入框并填入参数,FEIN字段留空,构造选项保持默认All
        # 公司名称输入框
        company_input = wait.until(EC.presence_of_element_located((By.ID, "ctl00_ContentPlaceHolder1_txtBusinessName")))
        company_input.clear()
        company_input.send_keys(company_name)
        
        # 员工名字输入框
        first_name_input = wait.until(EC.presence_of_element_located((By.ID, "ctl00_ContentPlaceHolder1_txtFirstName")))
        first_name_input.clear()
        first_name_input.send_keys(employer_first_name)
        
        # 员工姓氏输入框
        last_name_input = wait.until(EC.presence_of_element_located((By.ID, "ctl00_ContentPlaceHolder1_txtLastName")))
        last_name_input.clear()
        last_name_input.send_keys(employer_last_name)
        
        # 3. 点击搜索按钮触发查询
        search_btn = wait.until(EC.element_to_be_clickable((By.ID, "ctl00_ContentPlaceHolder1_btnSearch")))
        search_btn.click()
        
        # 4. 判断是否有查询结果
        try:
            # 检测无结果提示文本
            wait.until(EC.presence_of_element_located((By.XPATH, "//*[contains(text(), 'No records found matching your search criteria')]")))
            return False
        except TimeoutException:
            # 无无结果提示,说明存在匹配记录
            return True
            
    except Exception as e:
        print(f"查询过程出现错误: {str(e)}")
        return False

代码说明

  • 采用显式等待代替强制等待,适配不同网络环境下的页面加载速度,稳定性更高
  • 输入前先调用clear()清空输入框原有默认值,避免输入内容拼接导致的查询错误
  • 加入了异常捕获逻辑,查询出错时会打印错误信息并返回False,避免程序直接崩溃
  • 元素定位使用页面固定ID,比XPath、CSS选择器的稳定性更高,只要站点不更新元素ID就不会失效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:06:03