สคริปต์ perl ขั้นต่ำสำหรับซีลีเนียมคืออะไร?
ฉันใช้ homebrew เพื่อติดตั้ง geckodriver และ chromedriver เวอร์ชันล่าสุด ฉันชอบแบบเก่ามากกว่า แต่ก็เต็มใจที่จะใช้ถ้าพวกเขาได้ผล ฉันได้ติดตั้งกับคอนโซล 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) ด้วยตนเองก่อนจึงจะเริ่มได้หรือไม่? ถ้าไม่ฉันต้องระบุอย่างน้อยที่จะเรียกใช้รหัสของฉันหรือไม่? ทั้งสองอย่างมีอยู่ในเส้นทางของฉัน env มีส่วนประกอบที่สามที่ฉันยังไม่ได้ติดตั้งหรือไม่? Addon ของเบราว์เซอร์อาจเป็นได้?
เป้าหมายเดียวของฉันคือ (ณ จุดนี้) เพื่อให้มันโหลดหน้าเว็บลงในเบราว์เซอร์ (โดยเฉพาะอย่างยิ่งในช่วงเวลานี้อย่าโง่เพื่อที่ฉันจะได้เห็นมันทำในสิ่งที่มันทำ)
คำตอบ
แม้ว่าจะใช้เฉพาะ Chrome แต่สิ่งต่อไปนี้เป็นโซลูชันซีลีเนียมขั้นต่ำ:
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/');