Quel est le script perl minimum pour Selenium?

Jan 03 2021

J'ai utilisé homebrew pour installer les dernières versions de geckodriver et chromedriver. Je préfère le premier, mais je serais prêt à utiliser l'un ou l'autre s'ils fonctionnaient. J'ai également installé avec la console cpan le module Selenium :: Remote :: Driver, et il l'a installé sans aucun avertissement. Je travaille actuellement à partir des exemples d'extraits de code surhttps://metacpan.org/pod/Selenium::Remote::Driver .

use Selenium::Remote::Driver;
 
my $driver = Selenium::Remote::Driver->new; $driver->get('http://www.google.com');
$driver->quit();

Lorsque j'essaye d'exécuter le script, je reçois l'erreur suivante:

Selenium server did not return proper status at /Library/Perl/5.18/Selenium/Remote/Driver.pm line 544.

Maintenant, je n'ai aucune idée de ce que je fais. Et je travaille à partir de certaines sources Web qui devraient probablement être obsolètes. Dois-je exécuter manuellement geckodriver (ou chromedriver) avant de commencer? Sinon, dois-je au moins spécifier lequel invoquer dans mon code? Les deux sont disponibles dans mon chemin env. Y a-t-il un troisième composant que je n'ai pas encore installé? Un addon de navigateur peut-être?

Mes seuls objectifs sont (à ce stade) de l'obtenir là où il charge une page Web dans un navigateur (de préférence pas sans tête à ce stade, afin que je puisse le voir faire ce qu'il fait).

Réponses

3 ikegami Jan 03 2021 at 13:29

Bien que spécifique à Chrome, ce qui suit est une solution de sélénium minimale:

use FindBin          qw( $RealBin ); use Selenium::Chrome qw( ); my $web_driver = Selenium::Chrome->new(
   binary => "$RealBin/chromedriver.exe", ); $web_driver->get('https://www.stackoverflow.com/');

$web_driver->shutdown_binary();

Je voulais gérer les exceptions, donc j'ai utilisé ceci:

use FindBin             qw( $RealBin );
use Selenium::Chrome    qw( );
use Sub::ScopeFinalizer qw( scope_finalizer );

my $web_driver; my $guard = scope_finalizer {
   if ($web_driver) { $web_driver->shutdown_binary();
      $web_driver = undef; } }; $web_driver = Selenium::Chrome->new(
   binary => "$RealBin/chromedriver.exe", ); $web_driver->get('https://www.stackoverflow.com/');