如何让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
相关产品推荐
相关产品推荐

