如何使用Selenium和Python将DELETE键击发送到文本字段?

时间:2014-12-07 01:57:09

标签: python selenium selenium-webdriver

如何使用Selenium Web测试仪将Keys.DELETE击键发送到文本字段?我正在尝试模拟用户键入字段,然后删除他们键入的内容以测试交互式自动提示功能。它应该将列表过滤到以查询开头的项目,然后在删除查询时再次显示所有可能的建议。发送.clear()的Unfortunatley无法再次取消筛选列表。 send_keys('\'127')也没有。

def get_suggestions():
    driver.get('https://www.example.com/')
    driver.find_element_by_css_selector('#searchQuery').click()
    driver.find_element_by_css_selector('#searchQuery').send_keys('a')
    sleep(0.5)
    driver.find_element_by_css_selector('#searchQuery').send_keys(Keys.DELETE)
    sleep(0.5)
    for suggestion in driver.find_elements_by_css_selector('#search-form #suggestions'):
        yield suggestion

如何模拟用户按下键盘上的删除按钮?

6 个答案:

答案 0 :(得分:12)

如果要删除光标前的字符,则需要使用Keys.BACKSPACE而不是Keys.DELETEKeys.DELETE用于删除光标后的字符。

答案 1 :(得分:4)

在python中,如果element.clear()(没有反应中的onChange)没有工作试试这个。

def clear_text(element):
            length = len(element.get_attribute('value'))
            element.send_keys(length * Keys.BACKSPACE)

答案 2 :(得分:1)

您可以使用Ctr+a突出显示文本并通过BACKSPACE将其删除:

element.send_keys(Keys.CONTROL, 'a')
element.send_keys(Keys.BACKSPACE)

答案 3 :(得分:1)

为什么没有人说需要进口?

from selenium.webdriver.common.keys import Keys

答案 4 :(得分:0)

  

我正在尝试模拟用户在字段中键入然后删除   他们输入了什么

如果您尝试一次删除一个键,则正如@falsetru所提到的,使用以下命令将一次删除一个字符:

element = driver.find_element_by_css_selector('#searchQuery')
element.send_keys(Keys.BACKSPACE)

但是,如果您要删除整个搜索查询,我宁愿清除输入字段。

element = driver.find_element_by_css_selector('#searchQuery')
element.click()
element.clear()

答案 5 :(得分:0)

此外,如果您要删除整个文本,可以在一个单独的函数中模仿this.theList[n] = objectctrl + a,如下所示:

backspace