在我绑定一个ID后,输入第一个数据,clear()清空后,在输入第二个,但是clear始终失效。
在百般查询后,看到这个博客
如果元素定位到了,但是clear没有效果,根本原因是:存在镜像节点. 操作clear()清掉数据后,
镜像节点的数据还在,所以数据会补充回去
觉得很有道理,应该clear并没有清除本地浏览器上面input输入的数据,它仍然保存在浏览器上面。
另外一个说法:
clear()方法注释: /**
- If this element is a form entry element, this will reset its value.
- See W3C WebDriver specification
- and HTML specification
- for more details.
- */ void clear(); 所以clear()应该是只对form里的表单元素生效,不是则无效。
最终我是采用了ctrl+A全选的办法解决的。
代码如下:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
##webdriver 对象选择的元素是整个页面,而webrlrment对象选择的元素的范围是该元素的内部
##webdriver对象有个implicitly_wait,称之为隐式等待或全局等待,该方法接受一个参数,用来指定最大时长
wd=webdriver.Chrome() #将chromedriver.exe的目录放在环境变量中,即可不用调用service,直接调用浏览器
wd.get('https://www.baidu.com')
element=wd.find_element(By.ID,'kw') #找到input标签的的ID
element.send_keys('大树\n') #输入字符,\n回车键进行搜索
time.sleep(1)
#element.clear() #clear()方法不起作用,注释掉
element.send_keys(Keys.CONTROL, 'a') #通过全选上一个数据,再进行更改
element=wd.find_element(By.ID,'kw') #找到input标签的的ID
element.send_keys('花朵\n')
input()
版权归原作者 sk无法 所有, 如有侵权,请联系我们删除。