selenium

经常在操作某些输入框时,需要清除之前输入的内容,但是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)   # 也可以这样写
原文地址:https://www.cnblogs.com/xiaochongc/p/14152143.html