सेलेनियम के लिए न्यूनतम पर्ल स्क्रिप्ट क्या है?
मैंने होमब्रे का उपयोग जेकोड्राइवर और क्रोमेड्रिवर के नवीनतम संस्करणों को स्थापित करने के लिए किया है। मैं पूर्व को पसंद करता हूं, लेकिन अगर वे काम करते हैं तो या तो उपयोग करने को तैयार होंगे। मैंने सेलेन कंसोल के साथ सेलेनियम :: रिमोट :: ड्राइवर मॉड्यूल के साथ स्थापित किया है, और यह बिना किसी चेतावनी के स्थापित है। मैं वर्तमान में उदाहरण कोड स्निपेट पर काम कर रहा हूं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 संभवतः?
मेरा एकमात्र लक्ष्य है (इस बिंदु पर) इसे प्राप्त करने के लिए जहां यह एक वेब पेज को एक ब्राउज़र में लोड करता है (अधिमानतः इस बिंदु पर बिना सिर के नहीं, ताकि मैं यह देख सकूं कि यह क्या करता है)।
जवाब
क्रोम-विशिष्ट होते हुए, निम्नलिखित एक न्यूनतम सेलेनियम समाधान है:
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/');