Forráskód Böngészése

Fix #380: better maximize() polyfill for chrome

George S. Baugh 7 éve
szülő
commit
c337957a00
3 módosított fájl, 10 hozzáadás és 2 törlés
  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
         [BUG FIXES]
         - Fix incorrect documentation of constructor fields.
+        - Fix chrome maximize() polyfill
 
 1.27   03-25-2018 TEODESIAN
         [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();
 
+ok($driver->maximize_window(),"can maximize window (WD3)");
+
 is($driver->get_capabilities()->{browserName},'chrome',"Can get Capabilities correctly (WD3)");
 my $sessions = $driver->get_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_size(640,480),"can set window size (WD3)");
 
-ok($driver->maximize_window(),"can maximize window (WD3)");
 SKIP: {
     skip "chromedriver does not minimize", 1;
     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.
     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:
     STRING - <optional> - window handle (default is 'current' window)
 
@@ -2308,7 +2311,10 @@ sub set_window_size {
 sub maximize_window {
     my ( $self, $window ) = @_;
     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';
     my $res = { 'command' => 'maximizeWindow', 'window_handle' => $window };