gpt4 book ai didi

perl - WWW::Mechanize::Chrome 如何关闭选项卡

转载 作者:行者123 更新时间:2023-12-02 19:30:19 25 4
gpt4 key购买 nike

我似乎不知道如何在使用 WWW::Mechanize::Chrome 时关闭选项卡。

my $mech = WWW::Mechanize::Chrome->new();
$mech->get('https://www.google.com/');

没有 $mech->close_tab() 方法。

所以问题是,如何关闭当前正在使用的选项卡?

suggested by @zdim :

my $driver = $mech->driver

似乎返回 Chrome::DevToolsProtocol 实例。

然后为了关闭选项卡,您必须调用 close_tab() 函数并将当前选项卡作为参数传递:

$mech->driver->close_tab($mech->tab);

此方法会生成以下错误,但会关闭选项卡:

Calling ->catch in void context at C:/Perl64/site/lib/Chrome/DevToolsProtocol.pm line 567

最佳答案

Chrome::DevToolsProtocol中有一个close_tab方法,这是一个

asynchronous dispatcher for the DevTools protocol

并且不提供实例化对象的方法。

WWW::Mechanize::Chrome有方法driver记录为

Access the Chrome::DevToolsProtocol instance connecting to Chrome.

幸运的是,这很简单,也许 $chrome->driver->close_tab 可以做到。

其构造函数还有一个选项driver,描述为

A premade Chrome::DevToolsProtocol object.

没有更多细节。 更新:使用它需要更多工作

我还无法追寻这些线索,因为在安装了 54(五十四个)发行版后,安装最终顽固地失败了。

希望这可以帮助某人解决这个问题。

<小时/>

更新  强制安装后,我可以确认问题更新

use warnings;
use strict;
...

my $chrome = WWW::Mechanize::Chrome->new(tab => undef); # new tab for demo

$chrome->get('https://www.google.com/');

sleep 5;
$chrome->driver->close_tab($chrome->tab);
sleep 5;

这确实会发出警告

Calling ->catch in void context at .../Chrome/DevToolsProtocol.pm line 567.

从消息中引用的代码来看,这似乎暴露了一个错误。

关于perl - WWW::Mechanize::Chrome 如何关闭选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52435775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com