经常在操作某些输入框时,需要清除之前输入的内容,但是clear()方法有时会不生效,解决方案如下:
方案一:使用双击
1. 适用于英文、数字等
2. 中文不太适用,因为中文双击的话不能全选中
driver.get('https://www.baidu.com/') ele_input = driver.find_element_by_id('kw') ele_input.send_keys('zhangyang') time.sleep(2) ActionChains(driver).double_click(ele_input).perform() # 使用双击清空文本框 ele_input.send_keys('zhangyang2')
方案二:
键盘操作,全选-删除
(mac和windows对键盘操作不一致)
方案三:使用万能的js
1. 这个方案适合于传统的行为驱动模式开发的页面,即通过改变dom元素来改变页面
2. 但对于react这种数据驱动开发的页面,即通过数据来改变页面(数据在js中),就不太适用
driver.get("https://www.baidu.com") driver.find_element_by_id('kw').send_keys('zhangyang') driver.find_element_by_id('su').click() time.sleep(2) js = 'document.querySelector("#kw").value="";' # 使用js清空 # js = 'document.getElementById("kw").value="abcd";' # 使用js修改input的值 driver.execute_script(js)
ele = driver.find_element_by_xpath('//*[@id="nest-messages_agencyName"]') driver.execute_script('arguments[0].value="aaa"', ele) # 也可以这样写