在网络自动化代码中,我试图找到一个网络元素并在其中写入一些内容。我的代码可以找到该网络元素,但无法通过 send_keys 方法在该元素中写入文本,并且代码引发类型错误:'WebElement ' 对象不可迭代。 据我搜索过此错误,它应该在尝试迭代单个 WebElement 对象时发生,就好像它是一个列表或对象集合一样,所以我不明白为什么它会在我的情况下发生。 你能指导我解决这个问题吗? 附加信息: 我的最小化代码是:
receiptDate=r"1403/07/03" receiptDate = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "input[name='nreceipt.receiptDate']")))
receiptDate.clear()
receiptDate.send_keys(receiptDate)
完整的错误代码是:
File "c:\kalantari\miscellaneous\PythOn\web scraping\sabad\varizi.py", line 104, in <module> receiptDate.send_keys(receiptDate) File "C:\kalantari\miscellaneous\PythOn\web scraping\sabad\sabad_env\Lib\site-packages\selenium\webdriver\remote\webelement.py", line 232, in send_keys Command.SEND_KEYS_TO_ELEMENT, {"text": "".join(keys_to_typing(value)), "value": keys_to_typing(value)} ^^^^^^^^^^^^^^^^^^^^^ File "C:\kalantari\miscellaneous\PythOn\web scraping\sabad\sabad_env\Lib\site-packages\selenium\webdriver\common\utils.py", line 137, in keys_to_typing characters.extend(val) TypeError: 'WebElement' object is not iterable
网页元素代码为:
<input type="text" name="nreceipt.receiptDate" maxlength="10" size="10" value="1403/07/18" onkeypress="return autoMask(this,event,'####/##/##')">
也许问题在于您尝试将receiptDate 变量用于WebElement 和要发送到该元素的字符串值。 这可能会导致冲突,因为 send_keys 需要一个字符串,但它正在接收一个 WebElement, 导致WebElement对象不可迭代错误。
receipt_date_value = r"1403/07/03"
receipt_date_element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "input[name='nreceipt.receiptDate']")))
receipt_date_element.clear()
receipt_date_element.send_keys(receipt_date_value)