Python Selenium中send_keys方法报错:'WebElement'对象不可迭代
问题原因分析
你代码里的核心问题是变量名重复赋值:
- 一开始把
receiptDate定义成了日期字符串:receiptDate=r"1403/07/03" - 紧接着又用同一个变量名接收了定位到的WebElement对象:
receiptDate = WebDriverWait(driver, 20).until(EC.presence_of_element_located(...)) - 最后调用
send_keys(receiptDate)时,传入的已经是WebElement对象,而非原本的日期字符串。Selenium的send_keys方法需要接收字符串(或可迭代的字符序列),但WebElement对象不可迭代,直接触发了TypeError: 'WebElement' object is not iterable。
修复方案
把日期字符串和WebElement对象用不同变量名区分,避免覆盖:
# 单独存储日期字符串 receipt_date = r"1403/07/03" # 用另一个变量接收定位到的元素 receipt_date_input = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "input[name='nreceipt.receiptDate']"))) receipt_date_input.clear() receipt_date_input.send_keys(receipt_date)
额外优化建议
- 可以把
EC.presence_of_element_located换成EC.visibility_of_element_located,确保元素不仅存在于DOM中,还处于可见、可交互状态,避免输入失败。 - 目标元素自带
autoMask掩码逻辑,你的日期格式1403/07/03符合####/##/##要求,无需调整。
内容的提问来源于stack exchange,提问作者Soroush Kalantari
相关产品推荐
相关产品推荐

