소스 검색

Merge pull request #42 from intchanter/master

Update several methods to 'croak' instead of returning a string, better matching our documented behavior and allowing for easier debugging.
Mark Stosberg 12 년 전
부모
커밋
65bc16eb50
2개의 변경된 파일17개의 추가작업 그리고 15개의 파일을 삭제
  1. 12 12
      lib/Selenium/Remote/Driver.pm
  2. 5 3
      lib/Selenium/Remote/WebElement.pm

+ 12 - 12
lib/Selenium/Remote/Driver.pm

@@ -592,7 +592,7 @@ sub set_timeout {
     my ($self, $type, $ms) = @_;
     if (not defined $type or not defined $ms)
     {
-        return "Expecting type & timeour in ms";
+        croak "Expecting type & timeout in ms";
     }
     my $res = {'command' => 'setTimeout'};
     my $params = {'type' => $type, 'ms' => $ms};
@@ -619,7 +619,7 @@ sub set_async_script_timeout {
     my ($self, $ms) = @_;
     if (not defined $ms)
     {
-        return "Expecting timeout in ms";
+        croak "Expecting timeout in ms";
     }
     my $res  = {'command' => 'setAsyncScriptTimeout'};
     my $params  = {'ms' => $ms};
@@ -964,7 +964,7 @@ sub execute_async_script {
     my ( $self, $script, @args ) = @_;
     if ($self->javascript) {
         if ( not defined $script ) {
-            return 'No script provided';
+            croak 'No script provided';
         }
         my $res  = { 'command'    => 'executeAsyncScript' };
 
@@ -1024,7 +1024,7 @@ sub execute_script {
     my ( $self, $script, @args ) = @_;
     if ($self->javascript) {
         if ( not defined $script ) {
-            return 'No script provided';
+            croak 'No script provided';
         }
         my $res  = { 'command'    => 'executeScript' };
 
@@ -1255,7 +1255,7 @@ sub set_window_position {
     my ( $self, $x, $y, $window ) = @_;
     $window = (defined $window)?$window:'current';
     if (not defined $x and not defined $y){
-        return "X & Y co-ordinates are required";
+        croak "X & Y co-ordinates are required";
     }
     my $res = { 'command' => 'setWindowPosition', 'window_handle' => $window };
     my $params = { 'x' => $x, 'y' => $y };
@@ -1288,7 +1288,7 @@ sub set_window_size {
     my ( $self, $height, $width, $window ) = @_;
     $window = (defined $window)?$window:'current';
     if (not defined $height and not defined $width){
-        return "height & width of browser are required";
+        croak "height & width of browser are required";
     }
     my $res = { 'command' => 'setWindowSize', 'window_handle' => $window };
     my $params = { 'height' => $height, 'width' => $width };
@@ -1352,7 +1352,7 @@ sub add_cookie {
         || ( not defined $path )
         || ( not defined $domain ) )
     {
-        return "Missing parameters";
+        croak "Missing parameters";
     }
 
     my $res        = { 'command' => 'addCookie' };
@@ -1407,7 +1407,7 @@ sub delete_all_cookies {
 sub delete_cookie_named {
     my ( $self, $cookie_name ) = @_;
     if ( not defined $cookie_name ) {
-        return "Cookie name not provided";
+        croak "Cookie name not provided";
     }
     my $res = { 'command' => 'deleteCookieNamed', 'name' => $cookie_name };
     return $self->_execute_command($res);
@@ -1458,7 +1458,7 @@ sub get_page_source {
 sub find_element {
     my ( $self, $query, $method ) = @_;
     if ( not defined $query ) {
-        return 'Search string to find element not provided.';
+        croak 'Search string to find element not provided.';
     }
     my $using = ( defined $method ) ? FINDERS->{$method} : 'xpath';
     if (defined $using) {
@@ -1510,7 +1510,7 @@ sub find_element {
 sub find_elements {
     my ( $self, $query, $method ) = @_;
     if ( not defined $query ) {
-        return 'Search string to find element not provided.';
+        croak 'Search string to find element not provided.';
     }
     my $using = ( defined $method ) ? FINDERS->{$method} : 'xpath';
     if (defined $using) {
@@ -1576,7 +1576,7 @@ sub find_elements {
 sub find_child_element {
     my ( $self, $elem, $query, $method ) = @_;
     if ( ( not defined $elem ) || ( not defined $query ) ) {
-        return "Missing parameters";
+        croak "Missing parameters";
     }
     my $using = ( defined $method ) ? $method : 'xpath';
     if (exists FINDERS->{$using}) {
@@ -1632,7 +1632,7 @@ sub find_child_element {
 sub find_child_elements {
     my ( $self, $elem, $query, $method ) = @_;
     if ( ( not defined $elem ) || ( not defined $query ) ) {
-        return "Missing parameters";
+        croak "Missing parameters";
     }
     my $using = ( defined $method ) ? $method : 'xpath';
     if (exists FINDERS->{$using}) {

+ 5 - 3
lib/Selenium/Remote/WebElement.pm

@@ -3,6 +3,8 @@ package Selenium::Remote::WebElement;
 use strict;
 use warnings;
 
+use Carp qw(croak);
+
 =head1 NAME
 
 Selenium::Remote::WebElement - Representation of an HTML Element used by Selenium Remote Driver
@@ -284,7 +286,7 @@ sub clear {
 sub get_attribute {
     my ($self, $attr_name) = @_;
     if (not defined $attr_name) {
-        return 'Attribute name not provided';
+        croak 'Attribute name not provided';
     }
     my $res = {'command' => 'getElementAttribute',
                'id' => $self->{id},
@@ -349,7 +351,7 @@ sub is_displayed {
 sub drag {
     my ($self, $x, $y) = @_;
     if ((not defined $x) || (not defined $y)){
-        return 'X & Y pixel coordinates not provided';
+        croak 'X & Y pixel coordinates not provided';
     }
     my $res = {'command' => 'dragElement','id' => $self->{id}};
     my $params = {
@@ -420,7 +422,7 @@ sub get_text {
 sub get_css_attribute {
     my ($self, $attr_name) = @_;
     if (not defined $attr_name) {
-        return 'CSS attribute name not provided';
+        croak 'CSS attribute name not provided';
     }
     my $res = {'command' => 'getElementValueOfCssProperty',
                'id' => $self->{id},