[libweasel-perl] 06/24: * Add interfaces required for WidgetHandlers

Robert James Clay jame at rocasa.us
Tue Aug 15 19:16:07 UTC 2017


This is an automated email from the git hooks/post-receive script.

jame-guest pushed a commit to tag v0.02
in repository libweasel-perl.

commit 988c19697dd92aa2b92d6593833d0f893265bf50
Author: Erik Huelsmann <ehuels at gmail.com>
Date:   Thu Jun 16 10:20:09 2016 +0200

    * Add interfaces required for WidgetHandlers
---
 dist.ini                 |  2 ++
 lib/Weasel/DriverRole.pm | 15 +++++++++++++++
 lib/Weasel/Session.pm    | 36 +++++++++++++++++++++++++++++-------
 3 files changed, 46 insertions(+), 7 deletions(-)

diff --git a/dist.ini b/dist.ini
index a985c0e..5fdacab 100644
--- a/dist.ini
+++ b/dist.ini
@@ -21,3 +21,5 @@ File::Util = 0
 Moose = 0
 Module::Runtime = 0
 List::Util = 0
+Try::Tiny = 0
+
diff --git a/lib/Weasel/DriverRole.pm b/lib/Weasel/DriverRole.pm
index c1c2a56..a68ab9e 100644
--- a/lib/Weasel/DriverRole.pm
+++ b/lib/Weasel/DriverRole.pm
@@ -158,6 +158,21 @@ sub set_selected {
     croak "Abstract interface method 'set_selected' called";
 }
 
+=item screenshot($fh)
+
+=cut
+
+sub screenshot {
+    croak "Abstract interface method 'screenshot' called";
+}
+
+=item tag_name($element_id)
+
+=cut
+
+sub tag_name {
+    croak "Abstract interface method 'tag_name' called";
+}
 
 =back
 
diff --git a/lib/Weasel/Session.pm b/lib/Weasel/Session.pm
index 33226bb..7645bdf 100644
--- a/lib/Weasel/Session.pm
+++ b/lib/Weasel/Session.pm
@@ -37,11 +37,12 @@ use strict;
 use warnings;
 
 use Moose;
+
+use Try::Tiny;
 use Weasel::Element::Document;
 use Weasel::FindExpanders qw/ expand_finder_pattern /;
 use Weasel::WidgetHandlers qw| best_match_handler_class |;
 
-
 =head1 ATTRIBUTES
 
 
@@ -111,7 +112,17 @@ sub find {
     my ($self, @args) = @_;
     my $rv;
 
-    $self->wait_for( sub { return $rv = shift @{$self->find_all(@args)}; });
+    $self->wait_for( sub {
+        my @rv;
+        try {
+            @rv =  @{$self->find_all(@args)};
+        }
+        catch {
+            ###TODO add logger statement warning of consumed error
+        };
+        return $rv = shift @rv;
+
+                     });
 
     return $rv;
 }
@@ -121,13 +132,14 @@ sub find {
 =cut
 
 sub find_all {
-    my ($self, $element, $pattern, $args) = @_;
+    my ($self, $element, $pattern, %args) = @_;
 
+    my $expanded_pattern = expand_finder_pattern($pattern, \%args);
     my @rv =
         map { $self->_wrap_widget($_) }
         $self->driver->find_all($element->_id,
-                                expand_finder_pattern($pattern),
-                                $args->{scheme});
+                                $expanded_pattern,
+                                $args{scheme});
     return wantarray ? @rv : \@rv;
 }
 
@@ -143,9 +155,20 @@ sub get {
     my ($self, $url) = @_;
 
     $url = $self->base_url . $url;
+    ###TODO add logging warning of urls without protocol part
+    # which might indicate empty 'base_url' where one is assumed to be set
     $self->driver->get($url);
 }
 
+=item screenshot($fh)
+
+=cut
+
+sub screenshot {
+    my ($self, $fh) = @_;
+
+    $self->driver->screenshot($fh);
+}
 
 =item wait_for($callback)
 
@@ -173,8 +196,7 @@ sub _wrap_widget {
     my ($self, $_id) = @_;
     my $best_class = best_match_handler_class(
         $self->driver, $_id, $self->widget_groups) // 'Weasel::Element';
-
-    return $best_class->new(_id => $_id, session => $self->session);
+    return $best_class->new(_id => $_id, session => $self);
 }
 
 =back

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libweasel-perl.git



More information about the Pkg-perl-cvs-commits mailing list