diff --git a/lib/Selenium/ActionChains.pm b/lib/Selenium/ActionChains.pm
index a7b3cf3..8667ea7 100644
--- a/lib/Selenium/ActionChains.pm
+++ b/lib/Selenium/ActionChains.pm
@@ -153,17 +153,40 @@ sub key_up {
}
sub send_keys {
- my $self = shift;
- my $keys = shift;
+ my ($self,$keys) =@_;
+
+ # Do nothing if there are no keys to send
+ return unless $keys;
+
+ # DWIM
+ $keys = [split('',$keys)] unless ref $keys eq 'ARRAY';
+
push @{ $self->actions },
- sub { $self->driver->get_active_element->send_keys($keys) };
+ sub {
+ foreach my $key (@$keys) {
+ $self->key_down($key, $self->driver->get_active_element);
+ $self->key_up($key, $self->driver->get_active_element);
+ }
+ };
$self;
}
sub send_keys_to_element {
- my $self = shift;
- my ( $element, $keys ) = @_;
- push @{ $self->actions }, sub { $element->send_keys($keys) };
+ my ($self, $element, $keys) =@_;
+
+ # Do nothing if there are no keys to send
+ return unless $keys;
+
+ # DWIM
+ $keys = [split('',$keys)] unless ref $keys eq 'ARRAY';
+
+ push @{ $self->actions },
+ sub {
+ foreach my $key (@$keys) {
+ $self->key_down($key,$element);
+ $self->key_up($key,$element);
+ }
+ };
$self;
}
@@ -388,7 +411,8 @@ Releases a held mouse_button
=head2 send_keys
-Sends keys to the currently focused element
+Sends keys to the currently focused element.
+Essentially an alias around key_down then key_up.
Args:
The keys to send
@@ -398,7 +422,7 @@ Sends keys to the currently focused element
=head2 send_keys_to_element
-Sends keys to an element
+Sends keys to an element in much the same fashion as send_keys.
Args:
A Selenium::Remote::WebElement