Berapa script perl minimum untuk Selenium?
Saya telah menggunakan homebrew untuk menginstal versi terbaru geckodriver dan chromedriver. Saya lebih suka yang pertama, tetapi akan bersedia menggunakan keduanya jika berhasil. Saya telah menginstal dengan konsol cpan modul Selenium :: Remote :: Driver juga, dan diinstal tanpa peringatan apa pun. Saat ini saya sedang mengerjakan cuplikan kode contoh dihttps://metacpan.org/pod/Selenium::Remote::Driver .
use Selenium::Remote::Driver;
my $driver = Selenium::Remote::Driver->new; $driver->get('http://www.google.com');
$driver->quit();
Ketika saya mencoba untuk menjalankan skrip, saya menerima galat berikut ini:
Selenium server did not return proper status at /Library/Perl/5.18/Selenium/Remote/Driver.pm line 544.
Sekarang, saya tidak tahu apa yang saya lakukan. Dan saya bekerja dari beberapa sumber web yang mungkin harus ditinggalkan. Apakah saya perlu menjalankan geckodriver (atau chromedriver) secara manual sebelum saya memulai ini? Jika tidak, apakah saya harus setidaknya menentukan mana yang akan dipanggil dalam kode saya? Keduanya tersedia di jalur saya env. Apakah ada komponen ketiga yang belum saya instal? Mungkinkah addon browser?
Satu-satunya tujuan saya adalah (pada titik ini) untuk mendapatkannya di mana ia memuat halaman web ke dalam browser (sebaiknya tidak tanpa kepala pada saat ini, sehingga saya dapat melihatnya melakukan apa yang dilakukannya).
Jawaban
Sementara khusus Chrome, berikut ini adalah solusi Selenium minimal:
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();
Saya ingin menangani pengecualian, jadi saya benar-benar menggunakan ini:
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/');