सेलेनियम के लिए न्यूनतम पर्ल स्क्रिप्ट क्या है?

Jan 03 2021

मैंने होमब्रे का उपयोग जेकोड्राइवर और क्रोमेड्रिवर के नवीनतम संस्करणों को स्थापित करने के लिए किया है। मैं पूर्व को पसंद करता हूं, लेकिन अगर वे काम करते हैं तो या तो उपयोग करने को तैयार होंगे। मैंने सेलेन कंसोल के साथ सेलेनियम :: रिमोट :: ड्राइवर मॉड्यूल के साथ स्थापित किया है, और यह बिना किसी चेतावनी के स्थापित है। मैं वर्तमान में उदाहरण कोड स्निपेट पर काम कर रहा हूं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.

अब, मेरे पास कोई सुराग नहीं है कि मैं क्या कर रहा हूं। और मैं कुछ वेब स्रोतों से काम कर रहा हूं, जिन्हें संभवतः अपदस्थ किया जाना चाहिए। क्या मुझे इसे प्रारंभ करने से पहले मैन्युअल रूप से जियोड्राइवर (या क्रोमेड्रिवर) चलाने की आवश्यकता है? यदि नहीं, तो क्या मुझे कम से कम यह निर्दिष्ट करने की आवश्यकता है कि मेरे कोड में किसका आह्वान किया जाए? दोनों ही मेरे रास्ते में उपलब्ध हैं। क्या कोई तीसरा घटक है जिसे मैंने अभी स्थापित किया है? एक ब्राउज़र addon संभवतः?

मेरा एकमात्र लक्ष्य है (इस बिंदु पर) इसे प्राप्त करने के लिए जहां यह एक वेब पेज को एक ब्राउज़र में लोड करता है (अधिमानतः इस बिंदु पर बिना सिर के नहीं, ताकि मैं यह देख सकूं कि यह क्या करता है)।

जवाब

3 ikegami Jan 03 2021 at 13:29

क्रोम-विशिष्ट होते हुए, निम्नलिखित एक न्यूनतम सेलेनियम समाधान है:

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