[libweasel-perl] 14/24: * Implement APIs and fixes from testing
Robert James Clay
jame at rocasa.us
Tue Aug 15 19:16:08 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 b6afca1f7c2e7aca9b8cb0857d1d1abde8a33b55
Author: Erik Huelsmann <ehuels at gmail.com>
Date: Fri Jun 17 22:52:50 2016 +0200
* Implement APIs and fixes from testing
New APIs:
- get_attribute
- get_text
- tag_name
- is_displayed
---
lib/Weasel/DriverRole.pm | 16 +++++++++++++++
lib/Weasel/Element.pm | 41 ++++++++++++++++++++++++++++++++++++++
lib/Weasel/FindExpanders.pm | 2 +-
lib/Weasel/Session.pm | 42 ++++++++++++++++++++++++++++++++++++++-
lib/Weasel/WidgetHandlers.pm | 15 ++++++++++----
lib/Weasel/Widgets/HTML/Select.pm | 2 +-
6 files changed, 111 insertions(+), 7 deletions(-)
diff --git a/lib/Weasel/DriverRole.pm b/lib/Weasel/DriverRole.pm
index 44644c2..c7dc40e 100644
--- a/lib/Weasel/DriverRole.pm
+++ b/lib/Weasel/DriverRole.pm
@@ -96,6 +96,14 @@ sub get {
croak "Abstract interface method 'get' called";
}
+=item is_displayed($element_id)
+
+=cut
+
+sub is_displayed {
+ croak "Abstract interface method 'is_displayed' called";
+}
+
=item wait_for( $callback )
=cut
@@ -134,6 +142,14 @@ sub get_attribute {
croak "Abstract interface method 'get_attribute' called";
}
+=item get_text($element_id)
+
+=cut
+
+sub get_text {
+ croak "Abstract interface method 'get_text' called";
+}
+
=item set_attribute($element_id, $attribute_name, $value)
=cut
diff --git a/lib/Weasel/Element.pm b/lib/Weasel/Element.pm
index b0ca329..5472c36 100644
--- a/lib/Weasel/Element.pm
+++ b/lib/Weasel/Element.pm
@@ -70,6 +70,37 @@ sub find_all {
return $self->session->find_all($self, @args);
}
+=item get_attribute($attribute)
+
+=cut
+
+sub get_attribute {
+ my ($self, $attribute) = @_;
+
+ return $self->session->get_attribute($self, $attribute);
+}
+
+=item get_text()
+
+=cut
+
+sub get_text {
+ my ($self) = @_;
+
+ return $self->session->get_text($self);
+}
+
+
+=item is_displayed
+
+=cut
+
+sub is_displayed {
+ my ($self) = @_;
+
+ return $self->session->is_displayed($self);
+}
+
=item click()
=cut
@@ -89,6 +120,16 @@ sub send_keys {
$self->session->send_keys($self, @keys);
}
+=item tag_name()
+
+=cut
+
+sub tag_name {
+ my ($self) = @_;
+
+ return $self->session->tag_name($self);
+}
+
=back
=cut
diff --git a/lib/Weasel/FindExpanders.pm b/lib/Weasel/FindExpanders.pm
index e231bff..6f52f58 100644
--- a/lib/Weasel/FindExpanders.pm
+++ b/lib/Weasel/FindExpanders.pm
@@ -73,7 +73,7 @@ sub expand_finder_pattern {
my ($pattern, $args, $groups) = @_;
return $pattern
- if ! ($pattern =~ m/\*([^\|]+)/);
+ if ! ($pattern =~ m/^\*([^\|]+)/);
my $name = $1;
croak "No expansions registered (while expanding '$pattern')"
diff --git a/lib/Weasel/Session.pm b/lib/Weasel/Session.pm
index 9d71b1b..0c2559f 100644
--- a/lib/Weasel/Session.pm
+++ b/lib/Weasel/Session.pm
@@ -152,7 +152,7 @@ sub find_all {
$expanded_pattern,
$args{scheme});
print STDERR "found " . scalar(@rv) . " elements for $pattern " . (join(', ', %args)) . "\n";
- print STDERR ' - ' . ref($_) . "\n" for (@rv);
+ print STDERR ' - ' . ref($_) . " (" . $_->tag_name . ")\n" for (@rv);
return wantarray ? @rv : \@rv;
}
@@ -173,6 +173,36 @@ sub get {
$self->driver->get($url);
}
+=item get_attribute($element, $attribute)
+
+=cut
+
+sub get_attribute {
+ my ($self, $element, $attribute) = @_;
+
+ return $self->driver->get_attribute($element->_id, $attribute);
+}
+
+=item get_text($element)
+
+=cut
+
+sub get_text {
+ my ($self, $element) = @_;
+
+ return $self->driver->get_text($element->_id);
+}
+
+=item is_displayed($element)
+
+=cut
+
+sub is_displayed {
+ my ($self, $element) = @_;
+
+ return $self->driver->is_displayed($element->_id);
+}
+
=item screenshot($fh)
=cut
@@ -193,6 +223,16 @@ sub send_keys {
$self->driver->send_keys($element->_id, @keys);
}
+=item tag_name($element)
+
+=cut
+
+sub tag_name {
+ my ($self, $element) = @_;
+
+ return $self->driver->tag_name($element->_id);
+}
+
=item wait_for($callback)
Waits until $callback->() returns true, or C<wait_timeout> expires
diff --git a/lib/Weasel/WidgetHandlers.pm b/lib/Weasel/WidgetHandlers.pm
index 14d9474..fadb290 100644
--- a/lib/Weasel/WidgetHandlers.pm
+++ b/lib/Weasel/WidgetHandlers.pm
@@ -93,6 +93,12 @@ sub _cached_elem_att {
: ($cache->{$att} = $driver->get_attribute($_id, $att));
}
+sub _att_eq {
+ my ($att1, $att2) = @_;
+
+ return ($att1 // '') eq ($att2 // '');
+}
+
sub best_match_handler_class {
my ($driver, $_id, $groups) = @_;
@@ -115,7 +121,7 @@ sub best_match_handler_class {
if (exists $conditions->{classes}) {
%{$elem_classes} =
- map { $_ => 1 }
+ map { $_ => 1 }
split /\s+/, ($driver->get_attribute($_id, 'class')
// '')
unless defined $elem_classes;
@@ -129,9 +135,10 @@ sub best_match_handler_class {
for my $att (keys %{$conditions->{attributes}}) {
next handler
- unless $conditions->{attributes}->{$att}
- eq _cached_elem_att(
- $elem_att_cache, $driver, $_id, $att);
+ unless _att_eq(
+ $conditions->{attributes}->{$att},
+ _cached_elem_att(
+ $elem_att_cache, $driver, $_id, $att));
$match_count++;
}
diff --git a/lib/Weasel/Widgets/HTML/Select.pm b/lib/Weasel/Widgets/HTML/Select.pm
index 1812fad..e28b391 100644
--- a/lib/Weasel/Widgets/HTML/Select.pm
+++ b/lib/Weasel/Widgets/HTML/Select.pm
@@ -54,7 +54,7 @@ sub find_option {
my ($self, $text) = @_;
my $popup = $self->_option_popup;
- $popup->find('*option', text => $text);
+ return $popup->find('*option', text => $text);
}
--
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