В IDE Селена шаблон кода, установленный драйвером / форматтером perl, содержит строку кода
use Test::Exception;
по умолчанию.
У меня есть несколько вопросов об этом модуле в отношении теста:: WWW :: Selenium.
Следует ли вообще использовать Test :: Exception в моих файлах .t?
До сих пор я не использовал никаких методов изэто и мои тесты работают нормально (я обычно делаю Happy-Path Testing).
Теперь у меня есть потенциальное применение.Я заметил, что объект селен иногда умирает, если он не может найти что-то на странице или если локатор неверен и т. Д. Во многих случаях я хочу, чтобы мои тесты продолжались, то есть Selenium не должен умирать и продолжать делать что-то на странице.
Будет ли это правильным использованием метода Test :: Exception? Должен ли я попытаться объединить его с Try :: Tiny?
Вот небольшой вспомогательный метод, который я только что написал.Методlife_and принадлежит Test :: Exception.
sub verify_text_qr {
my ( $sel, $text ) = @_;
#$sel - the selenium object
#$text ||= 'I think that'; # some text I am looking for on the page
lives_and( sub {
my $found = $sel->get_text("//p[contains(text(), '$text')]");
like( $found, qr /$text/)
},
"found '$text' on page" );
}
Edit - (вопрос все еще остается без ответа - я только немного улучшил метод, сделав его более надежным):
sub verify_text_qr {
my ( $sel, $text ) = @_;
#my $text = 'Es ist unstrittig, dass ';
my $found;
lives_and(
sub {
try {
$found = $sel->get_text("//p[contains(text(), '$text')]");
}
catch {
fail( "cannot find '$text': " . $_ );
$found = 0;
note "on page " . $sel->get_location() . ", " . $sel->get_title();
};
SKIP: {
skip "no use in searching for '$text'", 1 unless $found;
like( $found, qr/$text/ ); # or $sel->like() ??
}
},
"looked for '$text' on page"
);
}