使用 Selenium Python 发送文本时出现 InvalidElementStateException 无效元素状态:元素必须是用户可编辑的才能清除它”错误

2023-12-10

我在 Django 中有一个像这样的输入 HTML 元素

<input id="id" type="number" maxlength="50">

当我想找到并清除它时

elm_input = self.wait.until(EC.presence_of_element_located((By.ID, elm_id)))
elm_input.clear()
elm_input.send_keys(value)

有错误InvalidElementStateException

InvalidElementStateException invalid element state: Element must be user-editable in order to clear it"

我们无法发送密钥清除,因为硒知道CLEAR or DELETE键是字符键而不是数字键,它不会将键发送到元素输入。那么我该如何解决它,我已经尝试过ActionChains但它也不适用于


这个错误信息...

InvalidElementStateException invalid element state: Element must be user-editable in order to clear it"

...意味着网络驱动程序实例无法清除元素的现有内容。


元素的outerHTML 多一点可以帮助我们更好地分析问题。但是,您需要注意以下几件事:

  • 发送时字符序列而不是使用presence_of_element_located()你必须诱导WebDriver等待为了element_to_be_clickable().
  • 确保定位策略唯一标识网页元素您可以使用以下任一方法定位策略:

    • Using CSS_SELECTOR:

      elm_input = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#id[type='number'][maxlength='50']")))
      elm_input.clear()
      elm_input.send_keys("1234567890")
      
    • Using XPATH:

      elm_input = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='id' and @type='number'][@maxlength='50']")))
      elm_input.clear()
      elm_input.send_keys("1234567890")       
      
    • Note:您必须添加以下导入:

      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.common.by import By
      from selenium.webdriver.support import expected_conditions as EC
      

参考

您可以在以下位置找到相关讨论:

  • 无效的元素状态:元素必须是用户可编辑的才能清除尝试使用 Selenium 在下拉切换上单击并插入日期时出现的错误
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Selenium Python 发送文本时出现 InvalidElementStateException 无效元素状态:元素必须是用户可编辑的才能清除它”错误 的相关文章