Răsfoiți Sursa

Possible #362 fix: correct is_enabled polyfill

George S. Baugh 8 ani în urmă
părinte
comite
8045799884
5 a modificat fișierele cu 20 adăugiri și 5 ștergeri
  1. 4 1
      at/sanity-chrome.test
  2. 4 1
      at/sanity-edge.test
  3. 4 1
      at/sanity-ie.test
  4. 4 1
      at/sanity.test
  5. 4 1
      lib/Selenium/Remote/WebElement.pm

+ 4 - 1
at/sanity-chrome.test

@@ -204,7 +204,10 @@ is( $l2->get_tag_name(),'input',"get_tag_name works (WD3)");
 is( exception { $l2->get_element_location_in_view() }, undef, "get_element_location_in_view available in gegl krom");
 
 is($driver->find_element('hidon','id')->is_displayed(),0,"is_displayed returns false for type=hidden elements");
-is($driver->find_element('no-see-em','id')->is_displayed(),0,"is_displayed returns false for display=none");
+my $gone = $driver->find_element('no-see-em','id');
+is($gone->is_displayed(),0,"is_displayed returns false for display=none");
+is($gone->is_enabled(),1,"is_enabled returns true for non-input elements");
+
 is($driver->find_element('h1','tag_name')->get_text(),'Howdy Howdy Howdy', "get_text works (WD3)");
 
 $driver->find_element('clickme','id')->click();

+ 4 - 1
at/sanity-edge.test

@@ -216,7 +216,10 @@ is( $l2->get_tag_name(),'input',"get_tag_name works (WD3)");
 is( exception { $l2->get_element_location_in_view() }, undef, "get_element_location_in_view works");
 
 is($driver->find_element('hidon','id')->is_displayed(),0,"is_displayed returns false for type=hidden elements");
-is($driver->find_element('no-see-em','id')->is_displayed(),0,"is_displayed returns false for display=none");
+my $gone = $driver->find_element('no-see-em','id');
+is($gone->is_displayed(),0,"is_displayed returns false for display=none");
+is($gone->is_enabled(),1,"is_enabled returns true for non-input elements");
+
 is($driver->find_element('h1','tag_name')->get_text(),'Howdy Howdy Howdy ', "get_text works (WD3)");
 
 $driver->find_element('clickme','id')->click();

+ 4 - 1
at/sanity-ie.test

@@ -208,7 +208,10 @@ is( $l2->get_tag_name(),'input',"get_tag_name works (WD3)");
 like( exception { $l2->get_element_location_in_view() }, qr/unknown/, "get_element_location_in_view works");
 
 is($driver->find_element('hidon','id')->is_displayed(),0,"is_displayed returns false for type=hidden elements");
-is($driver->find_element('no-see-em','id')->is_displayed(),0,"is_displayed returns false for display=none");
+my $gone = $driver->find_element('no-see-em','id');
+is($gone->is_displayed(),0,"is_displayed returns false for display=none");
+is($gone->is_enabled(),1,"is_enabled returns true for non-input elements");
+
 is($driver->find_element('h1','tag_name')->get_text(),'Howdy Howdy Howdy', "get_text works (WD3)");
 
 $driver->find_element('clickme','id')->click();

+ 4 - 1
at/sanity.test

@@ -193,7 +193,10 @@ is( $l2->get_tag_name(),'input',"get_tag_name works (WD3)");
 ok( defined $l2->get_element_location_in_view()->{x}, "get_element_location_in_view polyfill works (WD3)");
 
 is($driver->find_element('hidon','id')->is_displayed(),0,"is_displayed returns false for type=hidden elements");
-is($driver->find_element('no-see-em','id')->is_displayed(),0,"is_displayed returns false for display=none");
+my $gone = $driver->find_element('no-see-em','id');
+is($gone->is_displayed(),0,"is_displayed returns false for display=none");
+is($gone->is_enabled(),1,"is_enabled returns true for non-input elements");
+
 is($driver->find_element('h1','tag_name')->get_text(),'Howdy Howdy Howdy', "get_text works (WD3)");
 
 $driver->find_element('clickme','id')->click();

+ 4 - 1
lib/Selenium/Remote/WebElement.pm

@@ -270,7 +270,10 @@ sub toggle {
 
 sub is_enabled {
     my ($self) = @_;
-    return $self->get_property('enabled') ? 1 : 0 if $self->driver->{is_wd3} && !(grep { $self->driver->browser_name eq $_ } qw{chrome MicrosoftEdge});
+    if ($self->driver->{is_wd3} && !(grep { $self->driver->browser_name eq $_ } qw{chrome MicrosoftEdge})) {
+        return 1 if $self->get_tag_name() ne 'input';
+        return $self->get_property('disabled') ? 0 : 1;
+    }
     my $res = { 'command' => 'isElementEnabled', 'id' => $self->id };
     return $self->_execute_command($res);
 }