Python Selenium脚本执行过快,如何放慢Chrome浏览器执行速度?
解决Selenium执行过快无法查看UI流程的方法
你用的implicitly_wait是用来等待元素加载的,不是放慢执行速度的,所以起不到你想要的效果。下面给你几个实用的解决办法:
1. 直接添加固定延迟(最简单)
用Python标准库的time.sleep()在关键操作前后加固定等待,比如每个操作后等1-2秒,适合学习时观察UI流程。
修改你的代码示例:
import time # 导入time模块 from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install())) driver.get("https://www.facebook.com/") driver.implicitly_wait(10) def timing(driver): time.sleep(2) # 等待2秒再定位元素 driver.find_element(By.CSS_SELECTOR , "input#email").send_keys("abc") time.sleep(2) # 输入完成后再等待2秒
2. 设置全局操作延迟(更省心)
给ChromeDriver添加--slowmo参数,让每个Selenium命令自动延迟指定毫秒数,不用手动在每个步骤加sleep。
示例代码:
from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By options = webdriver.ChromeOptions() options.add_argument("--slowmo=1000") # 每个操作延迟1000毫秒(1秒) driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()), options=options) driver.get("https://www.facebook.com/") driver.implicitly_wait(10) def timing(driver): driver.find_element(By.CSS_SELECTOR , "input#email").send_keys("abc")
3. 自定义延迟装饰器(灵活可控)
如果想给特定的交互方法(比如click、send_keys)统一加延迟,可以写一个装饰器,不用逐个修改代码:
import time from functools import wraps from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By def add_delay(delay=1): def decorator(func): @wraps(func) def wrapper(*args, **kwargs): result = func(*args, **kwargs) time.sleep(delay) return result return wrapper return decorator # 给send_keys方法统一加1秒延迟 webdriver.remote.webelement.WebElement.send_keys = add_delay(1)(webdriver.remote.webelement.WebElement.send_keys) driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install())) driver.get("https://www.facebook.com/") driver.implicitly_wait(10) def timing(driver): driver.find_element(By.CSS_SELECTOR , "input#email").send_keys("abc")
同理,你也可以用这个装饰器给click等其他交互方法添加延迟。
内容的提问来源于stack exchange,提问作者Sohail M
相关产品推荐
相关产品推荐

