(转载)selenium,clear()使用了不生效,解决输入框没法清空的情况

在使用 Selenium 进行自动化测试时,遇到输入框清空操作失效的问题。本文介绍了三种有效的方法:1) 双击输入框重新输入;2) 使用键盘全选并输入新内容;3) 利用 JavaScript 直接修改元素的 value 属性。通过这些方法,可以成功清空输入框并输入新数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原贴:
https://blog.youkuaiyun.com/sun_977759/article/details/108731881
问题:

1.元素定位,element.clear()清空输入框失效,只会在原有数据基础上追加。
2.我用js清空也不行,保存表单的时候又默认回原来的值。

解决办法:

总得来说有三个解决思路

一:双击输入框,然后重新输入内容(最笨,因为基本上双击选中不了全部内容)

需要导入 from selenium.webdriver import ActionChains

二:通过键盘全选,即模拟发起ctrl+a,然后重新输入内容(推荐)

需要导入 from selenium.webdriver.common.keys import Keys

三:通过万能的js直接定位到元素然后将元素的value值清空(需要了解一定的js语法,如果要做好web自动化,js多少也需要掌握点)

下面是以上三种方法的代码实现

ele = driver.find_element_by_xpath('//*[@id="data-assets-modules"]/div[3]/div/div[2]/form/div/div/div/input')

# 方法一:双击输入框,再输入新的内容
ActionChains(driver).double_click(ele).perform()
ele.send_keys('尝试双击修改')

# 方法二:通过键盘全选,然后直接输入新的内容,就不用clear了
ele.send_keys(Keys.CONTROL, 'a')
ele.send_keys('通过键盘全选达到清空效果')

# 方法三:万能的js
# 这种execute_script()的用法还需要学习
driver.execute_script("arguments[0].value = '';", ele)

# 也可以通过css选择器选取元素再把value清空
driver.execute_script('document.querySelector("#data-assets-modules > div:nth-child(3) > div > div.el-dialog__body > form > div > div > div > input").value=""')
ele.send_keys('通过js清空输入框')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值