2016-05-17 5 views
1

Ich versuche HTTP-Anfrage Parameter mit Selenium :: Remote :: Driverand Browsermob :: Proxy erfassen. Der Pseudocode ist wie folgt. Ich konnte die HTTP-Header nicht finden.Capture HTTP-Anfrage Header/Parameter mit BrowserMob Proxy und Selen-Web-Treiber mit Perl-Client

Jede Hilfe wäre willkommen.

use Selenium::Remote::Driver; 
use Data::Dumper; 

my $proxy = Browsermob::Proxy->new(trace => 2); 
my $driver = Selenium::Remote::Driver->new(
browser_name => 'firefox', 
proxy  => $proxy->selenium_proxy(1) 
); 

$proxy->new_har(payload => { 
     initialPageRef => '1' }, captureHeaders => 'true', 
    captureContent => 'true', 
    captureBinaryContent => 'true'); 

$driver->get('http://www.google.com/'); 
print Dumper($proxy->har); 

UPDATE:

  1. Das Modul Net :: HTTP :: Spore :: Role :: Middleware verwendet eine veraltete Methode (Klasse :: MOP :: load_class). Ich änderte es in Class :: Load :: load_class
  2. Das Argument 'httpProxy' zu Selenium :: Remote :: Driver muss spezifische IP-Adresse ohne URL-Schema sein. Wenn es $ proxy-> selen_proxy ist, funktioniert es nicht.

Allerdings konnte ich nur erste Anfrage erfassen. Die nachfolgenden Anforderungen, die Selen-Laufwerk macht, konnten nicht erfasst werden. Der folgende Code erfasst beispielsweise nur die erste GET-Anforderung, nicht die zweite.

use Data::Dumper; 
use Browsermob::Proxy; 
use Selenium::Remote::Driver; 

my $proxy = Browsermob::Proxy->new(
server_port => 8080, 
); 


$proxy->new_har(payload => { 
     initialPageRef => 'payload is optional' }, captureHeaders => 'true', 
    captureContent => 'true', 
    captureBinaryContent => 'true', port => $proxy->port); 

my $driver = Selenium::Remote::Driver->new(
browser_name => 'firefox', 
proxy  => { 'proxyType' => 'manual', 'httpProxy' =>  '127.0.0.1:'.$proxy->port}, 
); 
$driver->get('http://www.google.com/'); 
$driver->find_element("//input[\@name='q']")->send_keys("selenium"); 
$driver->find_element("//button[\@name='btnG']")->click; 
print Dumper($proxy->har); 

Antwort

0

Verwenden create_new_har statt new_har.

$proxy->create_new_har(
    payload => { 
     initialPageRef => 'payload is optional' 
    }, 
    captureHeaders => 'true', 
    captureContent => 'true', 
    captureBinaryContent => 'true' 
); 
+0

Danke für die Antwort. Aber es funktioniert nicht. Ich bekomme keine HTTP-Parameter – Patta

+0

Bitte senden Sie die Ausgabe/Fehler. –

+0

@Pathak, finden Sie die Ausgabe wie folgt. – Patta