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
相关产品推荐
相关产品推荐

