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

Python WebDriver选择器非法错误:计算器页面数字点击代码排查

错误原因分析
  • 无效CSS选择器:你使用的:contains()是jQuery扩展的伪类,不属于标准CSS选择器规范,Selenium的By.CSS_SELECTOR不支持该语法,这是触发"invalid or illegal selector"错误的核心原因。
  • 代码语法问题:
    • print("Number", number, "clicked!.")里的引号转义错误,正确写法应为print("Number", number, "clicked!")
    • except块中的print语句没有缩进,违反Python语法规范。
修正方案

针对计算器按钮的文本定位,改用原生支持文本匹配的XPath选择器,同时修正语法问题:

import time
from selenium import webdriver
from selenium.webdriver.common.by import By

try:
    # 目标数字串
    number_to_find = "71722336"

    # 遍历每个数字点击
    for number in number_to_find:
        # 用XPath定位包含对应数字的按钮元素
        selector = f'//li[contains(@class, "digits")]/strong[text()="{number}"]'
        boton_number = driver.find_element(By.XPATH, selector)
        boton_number.click()
        print(f"Number {number} clicked!")
        time.sleep(0.5)
except Exception as e:
    print(f"Error finding and clicking number: {e}")

额外优化方案

如果计算器按钮带有data-value这类存储数字的属性(比如<li class="digits"><strong data-value="7">7</strong></li>),可以用标准CSS选择器定位,效率更高:

selector = f'li.digits strong[data-value="{number}"]'
boton_number = driver.find_element(By.CSS_SELECTOR, selector)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 19:52:28