如何检查Selenium Remote Driver是否未退出?(Python)
检查Remote WebDriver是否已退出的几种方案
因为Remote WebDriver没有本地驱动的service属性,你可以通过以下几种方式判断它是否已退出:
方法一:执行轻量WebDriver命令并捕获异常
当Remote Driver的会话终止后,任何尝试与驱动交互的命令都会抛出WebDriverException或其子类(比如NoSuchSessionException)。你可以执行一个无副作用的轻量命令来验证:
from selenium.common.exceptions import WebDriverException, NoSuchSessionException def is_remote_driver_alive(driver): try: # 获取当前窗口句柄,无业务副作用的轻量操作 driver.current_window_handle return True except (NoSuchSessionException, WebDriverException): return False # 使用示例 if not is_remote_driver_alive(driver): break
这种方法无需额外依赖,完全基于Selenium自身API,兼容性强。
方法二:直接查询Remote Server的会话状态
如果你知晓Remote Server的地址,可以通过其REST接口检查会话是否存在,需要用到requests库:
import requests def is_remote_driver_alive(driver, remote_server_url): session_id = driver.session_id check_url = f"{remote_server_url.rstrip('/')}/wd/hub/session/{session_id}" try: response = requests.get(check_url) # 200状态码表示会话存在,404表示会话已销毁 return response.status_code == 200 except requests.exceptions.RequestException: # 无法连接远程服务器,说明驱动肯定不可用 return False # 使用示例(假设远程服务器地址为http://127.0.0.1:4444) if not is_remote_driver_alive(driver, "http://127.0.0.1:4444"): break
这种方法能明确区分“会话已终止”和“远程服务器不可达”两种情况,但需要额外安装requests库,且需提前知晓远程服务器地址。
内容的提问来源于stack exchange,提问作者user11419808
相关产品推荐
相关产品推荐

