如何使用python减慢selenium脚本中send_keys操作的速度?

问题描述 投票:0回答:4

我目前正在用 python 创建一个 selenium 脚本。我需要使用 send_keys 函数在文本框中输入一些内容。到目前为止,它的做法是正确的。但是,为了进行观察,我需要减慢 send_keys 填充文本字段的速度。我有办法做到这一点吗?另外,selenium 中是否有替代 send_keys 的方法? 感谢和问候 卡兰

python-3.x selenium selenium-chromedriver sendkeys
4个回答
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
投票

迭代马克的答案,您可以将其包装在可重用函数中:

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)    

0
投票

此例程模拟单击字段并以更真实的方式进行输入。

def simulate_typing(
    driver: WebDriver,
    element: WebElement,
    text: str,
    delay: float = 0.1,
):
    actions = ActionChains(driver, duration=20)
    actions.move_to_element(element)
    actions.click(element)
    actions.pause(delay)
    for letter in text:
        actions.send_keys(letter)
        actions.pause(delay)
    actions.perform()
© www.soinside.com 2019 - 2024. All rights reserved.