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

ChromeDriver执行JS代码遇JavascriptException问题求助

问题原因与解决办法

报错的核心原因是JavaScript方法名拼写错误:

  • 你使用的document.getElementByClassName是不存在的方法,正确的方法名称是document.getElementsByClassName(注意单词末尾是复数形式Elements)
  • 该方法返回的是一个HTMLCollection元素集合,而非单个DOM元素,因此需要通过索引指定具体要操作的元素(比如取第一个元素就加[0])

修正后的代码示例

方法1:修正方法名并指定元素索引

driver.execute_script("document.getElementsByClassName('hand card-stack fanned loose rotate-bottom ui-droppable')[0].classList.add('selectedstack');")
elms = WebDriverWait(driver, 0.5).until(EC.presence_of_all_elements_located((By.XPATH, cards)))
for elm in elms:
    driver.execute_script("arguments[0].setAttribute('class','selectedcard')", elm)
    driver.execute_script("arguments[0].click();", elm)

方法2:改用querySelector更简洁(匹配第一个符合条件的元素)

如果你只需要操作第一个匹配该类组合的元素,用querySelector更直观,写法如下:

driver.execute_script("document.querySelector('.hand.card-stack.fanned.loose.rotate-bottom.ui-droppable').classList.add('selectedstack');")
elms = WebDriverWait(driver, 0.5).until(EC.presence_of_all_elements_located((By.XPATH, cards)))
for elm in elms:
    driver.execute_script("arguments[0].setAttribute('class','selectedcard')", elm)
    driver.execute_script("arguments[0].click();", elm)

其他代码部分逻辑正常,只需修正第一行的JavaScript方法即可解决报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:42:05