使用Selenium编写if-else定时打开网页代码运行报错求助
问题修复方案
错误点梳理
- 核心语法错误:
if ct == 8:55行中8:55没有用引号包裹,属于非法Python表达式,直接触发Pylance语法校验报错 - 逻辑缺陷:Chrome驱动初始化放在while循环内部,每轮循环都会启动新的Chrome进程,无意义占用系统资源
- 适配问题:
strftime("%H:%M")返回的时间格式带前导零,早上8:55返回值为"08:55",直接和"8:55"匹配会失败 - 版本兼容问题:Selenium 4.0+版本已废弃直接给
webdriver.Chrome()传驱动路径的写法,需要通过Service类指定路径
修正后代码
如果需要提前启动浏览器,可以使用如下版本:
import time from selenium import webdriver from selenium.webdriver.chrome.service import Service from datetime import datetime # 驱动初始化放在循环外部,只启动一次浏览器 PATH = "chromedriver.exe" driver = webdriver.Chrome(service=Service(PATH)) target_time = "08:55" while True: ct = datetime.now().strftime("%H:%M") if ct == target_time: driver.get("https://webpage.com/") # 打开网页后跳出循环,避免重复执行 break else: print("Waiting for time to be 8:55...") # 每分钟检查一次足够,不需要休眠100秒 time.sleep(60)
如果希望到点再启动浏览器,可以使用如下版本:
import time from selenium import webdriver from selenium.webdriver.chrome.service import Service from datetime import datetime PATH = "chromedriver.exe" target_time = "08:55" while True: ct = datetime.now().strftime("%H:%M") if ct == target_time: driver = webdriver.Chrome(service=Service(PATH)) driver.get("https://webpage.com/") break else: print("Waiting for time to be 8:55...") time.sleep(60)
内容的提问来源于stack exchange,提问作者Swanith
相关产品推荐
相关产品推荐

