Browse Source

Fix #380: better maximize() polyfill for chrome

George S. Baugh 7 năm trước cách đây
mục cha
commit
c337957a00
3 tập tin đã thay đổi với 10 bổ sung2 xóa
  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 };