如何在使用perl打开浏览器之前完全关闭当前浏览器窗口

时间:2012-11-07 19:43:43

标签: windows perl

@links数组包含各种URL。根据以下代码,首先在Firefox中打开www.google.com。然后在进入forloop时,firefox被杀死; @links数组中的第一个URL被打开。在第二次进入forloop时,第二个URL在新选项卡中打开,之后浏览器被杀死。但我需要先每次进入forloop时杀死firefox,然后在新的浏览器窗口中打开URL。请帮助。

system("start https://www.google.com");

for($i=0;$i<@links;$i++)
{
    system("taskkill /im firefox.exe");
    system("start $links[$i]");
}

4 个答案:

答案 0 :(得分:1)

改为使用WWW::Mechanize::Firefox

MozRepl::RemoteObject提供更低级别的访问权限。

答案 1 :(得分:0)

尝试这样做:

system("start https://www.google.com");

foreach my $link (@links) {
    system("taskkill /im firefox.exe");
    system("start $link");
}

这是错误的:

for($i=0;$i<@links;$i++)

如果你想像这样迭代,请使用:

for ($i=0; $i<$#links; $i++)

答案 2 :(得分:0)

taskkill向一个或多个进程发送信号并立即返回。信令流程可能需要几毫秒才能实际关闭,因此请给您的流程一些时间来响应kill信号:

system("taskkill /im firefox.exe");
sleep 1;
system("start $links[$i]");

答案 3 :(得分:0)

尝试在命令上使用open来获取(然后杀死)pid。

如果你喜欢循环,就把它扔出去......

for(0..$#links) {
    my $item = $links[$_];
}

正如所说,你应该使用WWW :: Mechanize :: Firefox