已解决selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable

已解决(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问题,以及粉丝群里小伙伴提出的各种问题,文章形式:报错代码 + 报错翻译 + 报错原因 + 解决方法,包括程序安装、运行程序过程中等等问题,订阅专栏+关注博主后如遇到其他问题可私聊帮忙解决!!!

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年3月5日 下午7:11
下一篇 2023年3月5日 下午7:12

相关推荐