如何使用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
相关产品推荐
相关产品推荐

