已解决(selenium向input文本框输入内容失败问题)selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
最近在基于selenium+python框架学习WEB自动化爬虫测试,在尝试对input控件直接使用send_keys()方法进行输入文本操作时,报错了,提示输入失败,界面上效果看也未能成功实现文本信息输入,报错代码如下:
# 输入验证码
driver.find_element(by=By.XPATH, value="//input[@id='verycode']").send_keys(code)
# 点击确定
driver.find_element(by=By.XPATH, value="//button[@class='gsxt-btn btn-small btn-primary']").click()
报错信息如下:
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
报错信息翻译如下:
ElementNotInteractiableException:消息:元素不可交互
报错原因:
Selenium模拟操作文本框输入内容失败问题,selenium 对文本框的输入操作一般有两种形式,传统的是直接通过定位元素通过sendKeys()方法直接在文本框中输入信息。但有时候我们可以通过id 的方式将其进行定位,但却不能通过sendKeys()向文本框中输入文本信息。下面五种解决方法小伙伴们任选其一即可!!!
解决方法1:先清空默认值再输入文本
先使用clear()方法先清空默认文本 -> 再使用send_keys()方法进行输入文本操作。
e = driver.find_element(by=By.XPATH, value="//input[@id='verycode']")
e.clear() # 清空默认文本
e.send_keys(code)
driver.find_element(by=By.XPATH, value="//button[@class='gsxt-btn btn-small btn-primary']").click()
解决方法2:用jQuery的val方:
js = "return $('input').val();"
driver.execute_script(js)
解决方法3:用jQuery的attr方法:
js = "return $('input').attr('value');"
driver.execute_script(js)
解决方法4:用selenium自带的方法:
driver.find_element_by_tag_name('input').get_attribute('value')
解决方法5:实在没法定位,就设置time.sleep(),然后手动输入内容
本文已收录于:《告别Bug》专栏
本专栏用于记录学习和工作中遇到的各种疑难Bug问题,以及粉丝群里小伙伴提出的各种问题,文章形式:报错代码 + 报错翻译 + 报错原因 + 解决方法,包括程序安装、运行程序过程中等等问题,订阅专栏+关注博主后如遇到其他问题可私聊帮忙解决!!!