logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Weasel::FindExpanders - Mapping find patterns to xpath locators

Author

       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

Contributors

       Erik Huelsmann Yves Lavoie

Dependencies

Description

       The concept of findexpanders 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.

Maintainers

       Erik Huelsmann

Name

       Weasel::FindExpanders - Mapping find patterns to xpath locators

Source

       The source code repository for Weasel is at
        https://github.com/perl-weasel/weasel

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.

Support

       Community     support     is     available     through     perl-weasel@googlegroups.com     <mailto:perl-
       weasel@googlegroups.com>.

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\"}");

Version

       version 0.32

See Also