我如何在.send_keys()中的字符之间进行延迟

时间:2019-05-07 13:46:29

标签: python selenium

我正在自动化一个在线应用程序,并试图使每个“ .send_keys()”更加逼真。 id不仅仅是立即用“ name@email.com”猛击文本字段,而是像敲击按键之间的微小延迟一样使id变近,因此似乎是人在打字而不是机器人。

    driver.find_element_by_id('name_Firstname').send_keys('Name')

    timeDelay = random.randrange(3, 6)
    time.sleep(timeDelay)

    driver.find_element_by_id('name_Lastname').send_keys('last')

    timeDelay = random.randrange(3, 6)
    time.sleep(timeDelay)

在上面的示例中,“名称”和“最后一个”立即输入到该字段中。我怎样才能使它看起来更逼真,好像被键入了?

3 个答案:

答案 0 :(得分:2)

您可以延迟发送单词中的每个字符。

代码:

from time import sleep

def dummy_send(element, word, delay):    
    for c in word:
        driver.find_element_by_id(element).send_keys(c)
        sleep(delay)

dummy_send('name_Firstname', 'Name', 1)
dummy_send('name_Lastname', 'last', 1)

答案 1 :(得分:1)

您可以遍历字符串并发送一个和一个字符,并且之间略有延迟。

last = "last"
field = driver.find_element_by_id('name_Lastname')
for char in last:
    field.send_keys(char)
    time.sleep(.1)

答案 2 :(得分:0)

您可以这样做:

for char in "last":
    element.send_keys(char)
    time.sleep(random.randrange(3, 6))