清除输入框内容---selenium
方案:
六、通过万能的js直接定位到元素,然后把元素的value值清空
三、双击后替换
双击后替换,这也是一个比较常用的解决方案,但还是存在有可能没选全的情况,因此可以考虑多次双击解决这个问题,代码编写也比较方便,对于简单的输入框还是值得去使用的
导入Selenium的动作链库再进行代码的编写
from selenium.webdriver import ActionChains
思路:
直接双击输入框,使其内容被选中后向输入框发送退格功能键,清空内容。将上述方法写在循环里,循环次数通过number_of_executions参数控制,默认值为1次,即执行一次双击清空内容操作。
def double_click_clean(element, browser, number_of_executions=1):
"""
双击内容原理清除输入框中的内容
:param element: 需要操作的元素
:param browser: 浏览器对象
:param number_of_executions: 执行次数,多次执行能有效避免未选全情况
"""
action = ActionChains(browser)
for _ in range(number_of_executions):
action.double_click(element).send_keys(Keys.BACKSPACE).perform()
将其封装成 清除并输入内容 函数
def double_click_clean(element, browser, number_of_executions=1):
"""
双击内容原理清除输入框中的内容
:param element: 需要操作的元素
:param browser: 浏览器对象
:param number_of_executions: 执行次数,多次执行能有效避免未选全情况
"""
action = ActionChains(browser)
for _ in range(number_of_executions):
action.double_click(element).send_keys(Keys.BACKSPACE).perform()
def clean_with_send(element, browser, text: str, **kwargs):
"""
清空输入框并且输入内容
:param element: 需要操作的元素
:param browser: 浏览器对象
:param text: 输入的内容
"""
double_click_clean(element, browser, **kwargs)
element.send_keys(text)
四、全选后替换
众所周知全选的快捷键是Ctrl + A ,通过键盘输入全选快捷键,将输入框中的旧内容全部选中后直接输入替换,实现起来简单且又可靠,也不需要用到专门的动作链接口ActionChains
思路:
先对元素使用send_keys方法输入Ctrl + A 快捷键后,直接再使用send_keys方法输入我们想要的内容将其替换即可
def select_all_clean(element):
"""
全选内容原理清除输入框中的内容
:param element: 需要操作的元素
"""
# 发送全选快捷键
element.send_keys(Keys.CONTROL, "a")
element.send_keys(Keys.BACKSPACE)
def clean_with_send(element, text: str):
"""
清空输入框并且输入内容
:param element: 需要操作的元素
:param text: 输入的内容
"""
select_all_clean(element)
element.send_keys(text)
可以将其合并组合成一个函数,只需要短短两行即可实现
def clean_with_send(element, text: str):
"""
清空输入框并且输入内容
:param element: 需要操作的元素
:param text: 输入的内容
"""
# 发送全选快捷键
element.send_keys(Keys.CONTROL, "a")
element.send_keys(text)
六、通过万能的js直接定位到元素,然后把元素的value值清空
# 这种execute_script()的用法还需要学习
driver.execute_script("arguments[0].value = '';", ele)
price = 249900
driver.execute_script('arguments[0].value="{}";'.format(price), 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清空输入框')
elem = driver.find_element(By.XPATH, "//*[@id='negotiatedValue']")
参考: