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

Pytest+Selenium代码运行时request.cls.driver处报无效语法错误求助

问题排查结果

根本错误原因

你代码里的CSS选择器参数没有加引号,具体出错行如下:

driver.find_element_by_css_selector(#_evidon-banner-acceptbutton).click()

Python中#是单行注释的起始标识,你没有把CSS选择器用字符串包裹的情况下,Python会把#_evidon-banner-acceptbutton).click()整段识别为注释,导致这行代码实际只有driver.find_element_by_css_selector(,缺少闭合的右括号和参数,语法解析出错。由于Python解析时会认为上一行代码未结束,所以报错的行号会偏移指向后面的request.cls.driver = driver行,这也是你觉得报错位置和实际问题不对应的原因。

你注释掉iframe相关代码段后语法错误消失,测试可正常运行,也和这个错误原因完全匹配。

修复方案

把CSS选择器用单引号或者双引号包裹即可,修改后的代码段如下:

# 原错误行替换为下面这行
driver.find_element_by_css_selector('#_evidon-banner-acceptbutton').click()

额外优化建议

  • Selenium 4.0+版本已经废弃了find_element_by_*系列方法,建议替换为统一的find_element写法,示例:
    from selenium.webdriver.common.by import By
    # 替换xpath查找
    iframe = driver.find_element(By.XPATH, "//iframe[@name='__tcfapiLocator']")
    # 替换css选择器查找
    driver.find_element(By.CSS_SELECTOR, '#_evidon-banner-acceptbutton').click()
    
  • Windows路径中的反斜杠建议加转义或者用原始字符串,避免特殊字符转义问题,比如executable_path=r"C:\webdrivers\chromedriver.exe"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 15:54:03