Преглед изворни кода

Add log and log_types endpoints

Daniel Gempesaw пре 11 година
родитељ
комит
44c5f74568
4 измењених фајлова са 69 додато и 2 уклоњено
  1. 10 0
      lib/Selenium/Remote/Commands.pm
  2. 48 0
      lib/Selenium/Remote/Driver.pm
  3. 11 0
      t/01-driver.t
  4. 0 2
      t/03-spec-coverage.t

+ 10 - 0
lib/Selenium/Remote/Commands.pm

@@ -374,6 +374,16 @@ has '_cmds' => (
                 'url'                => "session/:sessionId/location",
                 'no_content_success' => 0
             },
+            'getLog' => {
+                'method'             => 'POST',
+                'url'                => "session/:sessionId/log",
+                'no_content_success' => 0
+            },
+            'getLogTypes'   => {
+                'method'             => 'GET',
+                'url'                => "session/:sessionId/log/types",
+                'no_content_success' => 0
+            },
 
             # /session/:sessionId/local_storage
             # /session/:sessionId/local_storage/key/:key

+ 48 - 0
lib/Selenium/Remote/Driver.pm

@@ -2101,6 +2101,54 @@ sub get_geolocation {
     my $res = { 'command' => 'getGeolocation' };
     return $self->_execute_command($res);
 }
+
+=head2 get_log
+
+ Description:
+    Get the log for a given log type. Log buffer is reset after each request.
+
+ Input:
+    Required:
+        <STRING> - Type of log to retrieve:
+        {client|driver|browser|server}. There may be others available; see
+        get_log_types for a full list for your driver.
+
+ Usage:
+    $driver->get_log( $log_type );
+
+ Output:
+    <ARRAY|ARRAYREF> - An array of log entries since the most recent request.
+
+=cut
+
+sub get_log {
+    my ( $self, $type ) = @_;
+    my $res = { 'command' => 'getLog' };
+    return $self->_execute_command( $res, { type => $type });
+}
+
+=head2 get_log_types
+
+ Description:
+    Get available log types. By default, every driver should have client,
+    driver, browser, and server types, but there may be more available,
+    depending on your driver.
+
+ Usage:
+    my @types = $driver->get_log_types;
+    $driver->get_log($types[0]);
+
+ Output:
+    <ARRAYREF> - The list of log types.
+
+=cut
+
+sub get_log_types {
+    my ($self) = @_;
+    my $res = { 'command' => 'getLogTypes' };
+    return $self->_execute_command($res);
+}
+
 =head2 send_modifier
 
  Description:

+ 11 - 0
t/01-driver.t

@@ -478,6 +478,17 @@ HTML5: {
     }
 }
 
+LOGS: {
+    $driver->get($website);
+
+    my $types = $driver->get_log_types;
+    ok(scalar @$types >= 4, 'Can get log types');
+    foreach (@$types) {
+        my $log = $driver->get_log($_);
+        ok(defined $log, 'Can get logs from the ' . $_);
+    }
+}
+
 QUIT: {
     $ret = $driver->quit();
     ok((not defined $driver->{'session_id'}), 'Killed the remote session');

+ 0 - 2
t/03-spec-coverage.t

@@ -46,8 +46,6 @@ my $todo_list = {
    'GET session/:sessionId/session_storage/key/:key'       => 1,
    'DELETE session/:sessionId/session_storage/key/:key'    => 1,
    'GET session/:sessionId/session_storage/size'           => 1,
-   'POST session/:sessionId/log'                           => 1,
-   'GET session/:sessionId/log/types'                      => 1,
 };
 my @lines = split(/\n/, $data);
 my @methods;