Browse Source

Fix #380: better maximize() polyfill for chrome

George S. Baugh 7 years ago
parent
commit
c337957a00
3 changed files with 10 additions and 2 deletions
  1. 1 0
      Changes
  2. 2 1
      at/sanity-chrome.test
  3. 7 1
      lib/Selenium/Remote/Driver.pm

+ 1 - 0
Changes

@@ -3,6 +3,7 @@ Revision history for Selenium-Remote-Driver
 1.28   ??-??-???? TEODESIAN
 1.28   ??-??-???? TEODESIAN
         [BUG FIXES]
         [BUG FIXES]
         - Fix incorrect documentation of constructor fields.
         - Fix incorrect documentation of constructor fields.
+        - Fix chrome maximize() polyfill
 
 
 1.27   03-25-2018 TEODESIAN
 1.27   03-25-2018 TEODESIAN
         [BUG FIXES]
         [BUG FIXES]

+ 2 - 1
at/sanity-chrome.test

@@ -27,6 +27,8 @@ isa_ok($driver,'Selenium::Remote::Driver',"Can get new S::R::D with WebDriver3")
 
 
 $driver->debug_on();
 $driver->debug_on();
 
 
+ok($driver->maximize_window(),"can maximize window (WD3)");
+
 is($driver->get_capabilities()->{browserName},'chrome',"Can get Capabilities correctly (WD3)");
 is($driver->get_capabilities()->{browserName},'chrome',"Can get Capabilities correctly (WD3)");
 my $sessions = $driver->get_sessions();
 my $sessions = $driver->get_sessions();
 is(scalar(@$sessions),1,"Can fall back to selenium2 to list sessions");
 is(scalar(@$sessions),1,"Can fall back to selenium2 to list sessions");
@@ -139,7 +141,6 @@ ok($driver->switch_to_frame(),"can switch to parent frame (WD3 only)");
 ok($driver->set_window_position(1,1),"can set window position (WD3)");
 ok($driver->set_window_position(1,1),"can set window position (WD3)");
 ok($driver->set_window_size(640,480),"can set window size (WD3)");
 ok($driver->set_window_size(640,480),"can set window size (WD3)");
 
 
-ok($driver->maximize_window(),"can maximize window (WD3)");
 SKIP: {
 SKIP: {
     skip "chromedriver does not minimize", 1;
     skip "chromedriver does not minimize", 1;
     ok($driver->minimize_window(),"can minimize window (WD3 only)");
     ok($driver->minimize_window(),"can minimize window (WD3 only)");

+ 7 - 1
lib/Selenium/Remote/Driver.pm

@@ -2294,6 +2294,9 @@ sub set_window_size {
     In webDriver 3 enabled selenium servers, you may only operate on the focused window.
     In webDriver 3 enabled selenium servers, you may only operate on the focused window.
     As such, the window handle argument below will be ignored in this context.
     As such, the window handle argument below will be ignored in this context.
 
 
+    Also, on chromedriver maximize is actually just setting the window size to the screen's
+    available height and width.
+
  Input:
  Input:
     STRING - <optional> - window handle (default is 'current' window)
     STRING - <optional> - window handle (default is 'current' window)
 
 
@@ -2308,7 +2311,10 @@ sub set_window_size {
 sub maximize_window {
 sub maximize_window {
     my ( $self, $window ) = @_;
     my ( $self, $window ) = @_;
     if ($self->{is_wd3} && $self->browser_name eq 'chrome') {
     if ($self->{is_wd3} && $self->browser_name eq 'chrome') {
-        return $self->execute_script(qq{window.resizeTo(screen.availWidth,screen.availHeight); return 1;});
+        my $h = $self->execute_script(q{return screen.availHeight});
+        my $w = $self->execute_script(q{return screen.availWidth});
+
+        return $self->set_window_size($h,$w);
     }
     }
     $window = ( defined $window ) ? $window : 'current';
     $window = ( defined $window ) ? $window : 'current';
     my $res = { 'command' => 'maximizeWindow', 'window_handle' => $window };
     my $res = { 'command' => 'maximizeWindow', 'window_handle' => $window };