Selenium+Cucumber测试切换页面时出现无法确定加载状态错误求助
Selenium切换页面时出现"无法确定加载状态"错误的原因及解决办法
问题描述
有人知道在Selenium测试过程中为何会出现此错误吗?我在测试期间执行了页面切换操作,同时发现不进行页面切换时,测试运行正常且可通过。
错误日志
未知错误:无法确定加载状态 来自未知错误:意外的命令响应 (会话信息:chrome=104.0.5112.81) (Selenium::WebDriver::Error::UnknownError) 回溯: Ordinal0 [0x00C96463+2188387] Ordinal0 [0x00C2E461+1762401] Ordinal0 [0x00B43D78+802168] Ordinal0 [0x00B37210+750096] Ordinal0 [0x00B3675A+747354] Ordinal0 [0x00B35D3F+744767] Ordinal0 [0x00B34C28+740392] Ordinal0 [0x00B35228+741928] Ordinal0 [0x00B3EF2F+782127] Ordinal0 [0x00B49FBB+827323] Ordinal0 [0x00B4D310+840464] Ordinal0 [0x00B354F6+742646] Ordinal0 [0x00B49BF3+826355] Ordinal0 [0x00B9CF6D+1167213] Ordinal0 [0x00B8C5F6+1099254] Ordinal0 [0x00B66BE0+945120] Ordinal0 [0x00B67AD6+948950] GetHandleVerifier [0x00F371F2+2712546] GetHandleVerifier [0x00F2886D+2652765] GetHandleVerifier [0x00D2002A+520730] GetHandleVerifier [0x00D1EE06+516086] Ordinal0 [0x00C3468B+1787531] Ordinal0 [0x00C38E88+1805960] Ordinal0 [0x00C38F75+1806197] Ordinal0 [0x00C41DF1+1842673] BaseThreadInitThunk [0x76AEFA29+25] RtlGetAppContainerNamedObjectPath [0x77CC7A9E+286] RtlGetAppContainerNamedObjectPath [0x77CC7A6E+238]
原因及解决办法
- ChromeDriver与Chrome版本不匹配:你使用的Chrome版本是104.0.5112.81,必须确保ChromeDriver版本与浏览器版本完全对应。版本不匹配会导致Selenium与浏览器之间的通信异常,尤其是页面切换这类涉及会话状态的操作。
- 页面切换后未等待加载完成:切换到新页面后直接执行操作,Selenium无法确定页面的加载状态。需添加显式等待,等待页面核心元素加载完成或
document.readyState变为complete。
示例Ruby代码:# 切换到新窗口 new_window = driver.window_handles.last driver.switch_to.window(new_window) # 等待页面加载完成 wait = Selenium::WebDriver::Wait.new(timeout: 10) wait.until { driver.execute_script('return document.readyState') == 'complete' } - 会话状态异常:页面切换时可能出现会话丢失或通信中断,可尝试在切换前后重置等待策略,避免在页面未完全加载时执行切换操作。
- Chrome兼容性bug:部分Chrome版本在处理多窗口会话时存在已知bug,可尝试升级/降级Chrome到稳定版本,或启动Chrome时添加禁用实验特性的参数,例如
--disable-features=VizDisplayCompositor。
内容的提问来源于stack exchange,提问作者Mateus Vitorino
相关产品推荐
相关产品推荐

