如何使用Python在Selenium脚本中减缓send_keys操作的速度?

18

我目前正在使用 Python 创建一个 Selenium 脚本。我需要使用 send_keys 函数在文本框中输入一些内容。目前它已经能够正确地完成了。然而,为了观察到某些情况,我需要减慢 send_keys 填充文本字段的速度。有方法可以做到这一点吗?此外,在 Selenium 中是否有任何替代 send_keys 的方法? 谢谢&问候 卡兰

3个回答

30

你可以在每个字符发送后插入一个暂停。例如,如果你的代码长这样:

el = driver.find_element_by_id("element-id")
el.send_keys("text to enter")

您可以将其替换为:

el = driver.find_element_by_id("element-id")
text = "text to enter"
for character in text:
    el.send_keys(character)
    time.sleep(0.3) # pause for 0.3 seconds

11
遍历 Mark 的回答,您可以将其包装在一个可重复使用的函数中:
import time


def slow_type(element, text, delay=0.1):
    """Send a text to an element one character at a time with a delay."""
    for character in text:
        element.send_keys(character)
        time.sleep(delay)

带有类型提示的版本:

import time

from selenium.webdriver.remote.webelement import WebElement


def slow_type(element: WebElement, text: str, delay: float=0.1):
    """Send a text to an element one character at a time with a delay."""
    for character in text:
        element.send_keys(character)
        time.sleep(delay)

用法:

el = driver.find_element_by_id("element-id")
text = "text to enter"
slow_type(el, text)

0

去掉空格并减慢速度解决了问题

def type_and_fill_slow(form_id,message):
    form_id.clear()
    for character in message:
        type(form_id)
        time.sleep(2)
        form_id.send_keys(character)    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接