-1

这里@links 数组由各种 URL 组成。根据下面的代码,首先在 Firefox 中打开 www.google.com。然后在进入 forloop 时,firefox 被杀死;@links 数组中的第一个 URL 被打开。第二个 URL 在第二次进入 forloop 时在新选项卡中打开,之后浏览器被杀死。但是我每次进入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

4 回答 4

1

请改用WWW::Mechanize::Firefox

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

于 2012-11-07T20:12:53.250 回答
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++)
于 2012-11-07T19:51:39.163 回答
0

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

system("taskkill /im firefox.exe");
sleep 1;
system("start $links[$i]");
于 2012-11-07T20:02:29.700 回答
-1

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

如果你喜欢 for 循环,就把它扔在那里......

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

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

于 2012-11-07T20:48:59.887 回答