Perl and Selenium::Remote::Driver

China☆狼群 提交于 2021-01-27 21:30:21

问题


EDITED AGAIN

I have a server on AWS somewhere in Northern Virginia and this is my monitoring server. I ssh into this Ubuntu server from another State to do system administration. I want to do web automation tests on this server which will test a web application on the Internet hitting a URL and verify that I can selenium test a login and authenticate successfully. This server is on an AWS cloud I'm not quite sure which Perl module to use since I'm accessing it remotely.

There are two CPAN modules: Selenium::Remote::Driver and WWW::Selenium. I have tried both and they are giving me issues. And I really don't know which is appropriate for my scenario. When I use Selenium::Remote::Driver, I get the following error:

Selenium server did not return proper status at     /usr/local/share/perl/5.18.2/Selenium/Remote/Driver.pm line 401.

When I use WWW::Selenium, I get this error:

Failed to start new browser session: org.openqa.selenium.server.RemoteCommandException: Error while launching browser

I was able to launch firefox manually from the AWS monitoring server by exporting the DISPLAY but it was really slow. I have heard that I can use a headless browser but I would have to export the DISPLAY by:

export DISPLAY=:5

But remember, I'm sshing into this AWS/Selenium server from my desktop so I'm assuming I use the above command on the AWS/Selenium Server while I'm ssh into it from my desktop? Actually, at this point, I'm not sure I'm doing here. Can somebody help?


回答1:


Try running the below code:

#!/usr/bin/perl  
use warnings;
use strict;
use Selenium::Remote::Driver;

my $host = "10.10.1.1"; //Enter your server IP in this place
my $driver = new Selenium::Remote::Driver('remote_server_addr' =>  $host,
                                           'port' => '4444', 
                                           'auto_close' => 0);
$driver->get('http://www.google.com');



回答2:


The problem in this type of questions is that the variety of configurations and binaries in your setup might be so broad that the it is hard to actually provide a straight and correct answer for YOUR SETUP. This answer has the following assumptions:

  • you have downloaded the selenium-server-standalone.jar into /usr/lib/
  • you have jdk 1.8 ( run the java -version in the shell
  • you have installed and configured the xvfb-run ( it is a fight on it's own ) So :

```

 # ssh to your server , obs the -X !
 ssh -X user-name@server-name

 # start the selenium-server-standalone on the server
 xvfb-run -e /dev/stdout java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar /usr/lib/selenium-server-standalone.jar &

  # one liner test - this is one veery long one 
 perl -e 'use strict ; use warnings ; use Data::Printer ; my $host="127.0.0.1"; use Selenium::Remote::Driver;my $driver = Selenium::Remote::Driver->new( "browser_name" =>"chrome", "error_handler" => sub { print $_[1]; croak 'goodbye'; }, "remote_server_addr" => "$host","port"=> "4444");$driver->debug_on();$driver->get("http://www.google.com"); print $driver->get_title();$driver->quit();' &

```

Here is the code in the one-liner as a perl script

#!/usr/bin/env perl
use strict ;
use warnings ;
use Carp ;
use Data::Printer ;
 use Selenium::Remote::Driver;

my $host="127.0.0.1";
my $driver = Selenium::Remote::Driver->new(
    "browser_name" =>"chrome"
  , "error_handler" => sub { print $_[1]; croak 'goodbye' ; }
  , "remote_server_addr" => "$host"
  , "port"=> "4444") ;
$driver->debug_on() ;
$driver->get("http://www.google.com");
print $driver->get_title();
$driver->quit();

The output should look something like: ```

        Prepping get
        Executing get
        REQ: POST, http://127.0.0.1:4444/wd/hub/session/ddb9c2575ab026cdb8c640bdc554181b/url, {"url":"http://www.google.com"}
        RES: {"sessionId":"ddb9c2575ab026cdb8c640bdc554181b","status":0,"value":null}

        Prepping getTitle
        Executing getTitle
        REQ: GET, http://127.0.0.1:4444/wd/hub/session/ddb9c2575ab026cdb8c640bdc554181b/title, {}
        RES: {"sessionId":"ddb9c2575ab026cdb8c640bdc554181b","status":0,"value":"Google"}

        GooglePrepping quit
        Executing quit
        REQ: DELETE, http://127.0.0.1:4444/wd/hub/session/ddb9c2575ab026cdb8c640bdc554181b, {}
        RES: {"sessionId":"ddb9c2575ab026cdb8c640bdc554181b","status":0,"value":null}

```



来源:https://stackoverflow.com/questions/41251445/perl-and-seleniumremotedriver

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!