Selenium의 최소 펄 스크립트는 무엇입니까?

Jan 03 2021

최신 버전의 geckodriver 및 chromedriver를 설치하기 위해 homebrew를 사용했습니다. 나는 전자를 선호하지만 그들이 일하면 기꺼이 사용할 것입니다. Cpan 콘솔과 함께 Selenium :: Remote :: Driver 모듈도 설치했으며 경고없이 설치되었습니다. 현재 예제 코드 스 니펫에서 작업하고 있습니다.https://metacpan.org/pod/Selenium::Remote::Driver .

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

스크립트를 실행하려고하면 다음 오류가 표시됩니다.

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

지금은 내가 뭘하고 있는지 전혀 모르겠습니다. 그리고 나는 아마도 더 이상 사용되지 않는 웹 소스에서 일하고 있습니다. 시작하기 전에 수동으로 geckodriver (또는 chromedriver)를 수동으로 실행해야합니까? 그렇지 않은 경우 최소한 내 코드에서 호출 할 항목을 지정해야합니까? 둘 다 내 경로 환경에서 사용할 수 있습니다. 아직 설치하지 않은 세 번째 구성 요소가 있습니까? 아마도 브라우저 애드온?

내 유일한 목표는 (이 시점에서) 웹 페이지를 브라우저에로드하는 것입니다.

답변

3 ikegami Jan 03 2021 at 13:29

Chrome에만 해당되지만 다음은 최소 Selenium 솔루션입니다.

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();

예외를 처리하고 싶었 기 때문에 실제로 이것을 사용했습니다.

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/');