我目前正在使用 Python 创建一个 Selenium 脚本。我需要使用 send_keys 函数在文本框中输入一些内容。目前它已经能够正确地完成了。然而,为了观察到某些情况,我需要减慢 send_keys 填充文本字段的速度。有方法可以做到这一点吗?此外,在 Selenium 中是否有任何替代 send_keys 的方法? 谢谢&问候 卡兰
我目前正在使用 Python 创建一个 Selenium 脚本。我需要使用 send_keys 函数在文本框中输入一些内容。目前它已经能够正确地完成了。然而,为了观察到某些情况,我需要减慢 send_keys 填充文本字段的速度。有方法可以做到这一点吗?此外,在 Selenium 中是否有任何替代 send_keys 的方法? 谢谢&问候 卡兰
你可以在每个字符发送后插入一个暂停。例如,如果你的代码长这样:
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
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)
去掉空格并减慢速度解决了问题
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)