UI自动化测试

清除输入框内容---selenium

2022-05-06  本文已影响0人  Jeff_9021

方案:

、退格大法好

、不靠谱的拖动鼠标🤐

、双击后替换

、全选后替换「推荐」

、自带清空元素的内容方法「推荐」

六、通过万能的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']")

参考:

https://blog.csdn.net/XianZhe_/article/details/119697764

上一篇 下一篇

猜你喜欢

热点阅读