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

Nic*_*ing 11 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
Run Code Online (Sandbox Code Playgroud)

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

ham*_*yad 15

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

from selenium.webdriver.common.keys import Keys

element.send_keys(Keys.CONTROL, 'a')
element.send_keys(Keys.BACKSPACE)
Run Code Online (Sandbox Code Playgroud)


fal*_*tru 13

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


ncr*_*mro 5

在python中,如果element.clear()(不会在react中触发onChange)不起作用,请尝试此操作。

def clear_text(element):
            length = len(element.get_attribute('value'))
            element.send_keys(length * Keys.BACKSPACE)
Run Code Online (Sandbox Code Playgroud)


jas*_*n m 5

为什么没人说需要进口?

from selenium.webdriver.common.keys import Keys
Run Code Online (Sandbox Code Playgroud)


Aut*_*ngr 5

另外,如果您想删除整个文本,您可以在单个函数中模仿ctrl + a& ,如下所示:backspace

def clear_entire_text(element):
    element.send_keys(Keys.CONTROL + 'a', Keys.BACKSPACE)
Run Code Online (Sandbox Code Playgroud)