我已经使用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)吗?如果不是,我是否至少需要在代码中指定调用哪一个?这两个都可以在我的路径环境中找到。有没有我还没有安装的第三个组件?可能是一个浏览器插件?
我唯一的目标是(在这一点上)让它在浏览器中加载一个网页(最好在这个时候不是无头的,这样我就可以看到它所做的事情)。
发布于 2021-01-03 06:29:17
虽然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/');
https://stackoverflow.com/questions/65546890
复制相似问题