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

使用Python+Selenium定位Edge登录元素时遇JSON序列化错误

解决Selenium定位元素时的TypeError问题

你遇到的错误是因为调用find_element时参数使用错误。代码里的id是Python的内置函数,不是Selenium用来指定定位策略的标识符,导致无法序列化,触发了TypeError。

正确修改代码

首先需要导入By类,使用By.ID作为定位策略参数:

import time
from selenium import webdriver
from selenium.webdriver.common.by import By  # 新增导入By类

driver = webdriver.Edge()
time.sleep(3)
driver.get("my_URL")
time.sleep(3)

id_box = driver.find_element(By.ID, "correct_id")  # 修正定位参数

额外调试建议

  • 替换固定等待:不要依赖time.sleep(),改用显式等待更可靠,能避免因页面加载慢导致的元素未找到问题:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待元素出现,最多等10秒
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "correct_id"))
)
id_box = driver.find_element(By.ID, "correct_id")
  • 检查iframe嵌套:如果目标输入框在<iframe>标签内,需要先切换到iframe才能定位:
# 假设iframe的id为"target_frame"
driver.switch_to.frame("target_frame")
# 定位元素
id_box = driver.find_element(By.ID, "correct_id")
# 操作完成后切回主文档
driver.switch_to.default_content()
  • 验证元素ID:打开浏览器开发者工具(F12),在Elements标签搜索你使用的correct_id,确认该ID唯一且确实存在于页面中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:30:53