Weasel::FindExpanders(3pm) | User Contributed Perl Documentation | Weasel::FindExpanders(3pm) |
NAME¶
Weasel::FindExpanders - Mapping find patterns to xpath locators
VERSION¶
version 0.32
SYNOPSIS¶
use Weasel::FindExpanders qw( register_find_expander ); register_find_expander( 'button', 'HTML', sub { my %args = @_; $args{text} =~ s/'/''/g; # quote the quotes (XPath 2.0) return ".//button[text()='$args{text}']"; }); $session->find($session->page, "*button|{text=>\"whatever\"}");
DESCRIPTION¶
The concept of find expanders is used to define XPath templates for use with the "find" and "find_all" methods. Multiple patterns may be registered with the same pattern name ("mnemonic"); eg, there could be a two patterns associated with the "button" mnemonic, one for the "<button>" tag and one for the "<input type="submit">" tag. Or there could even be more patterns registered, eg., to match Vue, React or Web Component elements. All patterns registered on a single mnemonic (template name) will be compiled into a single XPath expression which will match any of the patterns.
Weasel comes with a standard set of patterns in the Weasel::FindExpanders::HTML package.
DEPENDENCIES¶
SUBROUTINES/METHODS¶
- register_find_expander($pattern_name, $group_name, &expander_function)
- Registers &expander_function as an expander
for $pattern_name in
$group_name.
"Weasel::Session" selects the expanders to be applied using its "groups" attribute.
- expand_finder_pattern($pattern, $args, $groups)
- Returns a string of concatenated (using xpath '|' operator) expansions.
When $groups is undef, all groups will be searched for "pattern_name".
If the pattern doesn't match '*<pattern_name>|{<arguments>}', the pattern is returned as the only list/arrayref element.
AUTHOR¶
Erik Huelsmann
CONTRIBUTORS¶
Erik Huelsmann Yves Lavoie
MAINTAINERS¶
Erik Huelsmann
BUGS AND LIMITATIONS¶
Bugs can be filed in the GitHub issue tracker for the Weasel
project:
https://github.com/perl-weasel/weasel/issues
SOURCE¶
The source code repository for Weasel is at
https://github.com/perl-weasel/weasel
SUPPORT¶
Community support is available through perl-weasel@googlegroups.com <mailto:perl-weasel@googlegroups.com>.
LICENSE AND COPYRIGHT¶
(C) 2016-2023 Erik Huelsmann
Licensed under the same terms as Perl.
2025-05-24 | perl v5.40.1 |