You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Perl中Selenium::Waiter的wait_until超时时终止脚本执行

实现方案

你可以通过两种常用方式实现需求:
第一种是直接判断wait_until返回值,为空就主动终止脚本:

use Selenium::Waiter 'wait_until';
use Selenium::Remote::Driver;
$selen = Selenium::Remote::Driver->new( ... );

$elem = wait_until { $selen->find_element('//h1[@class="banner-heading"]') } 
    or die "等待元素超时或元素不存在,脚本终止";

第二种是给wait_until加die参数,设置为true后,超时的时候会直接抛出异常终止运行,无需额外判断:

use Selenium::Waiter 'wait_until';
use Selenium::Remote::Driver;
$selen = Selenium::Remote::Driver->new( ... );

$elem = wait_until { $selen->find_element('//h1[@class="banner-heading"]') }, die => 1;

补充说明

  • Selenium::Waiter的die参数开启后,超时不再返回空字符串,会直接抛出Selenium::Waiter::TimeoutError异常,脚本自动终止
  • 闭包内find_element本身找不到元素时抛出的异常会被wait_until捕获,直到超时后触发终止逻辑,符合「元素不存在也终止」的需求

内容的提问来源于stack exchange,提问作者CJ7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:36:01