[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