2012-11-07 37 views
-1

这里@links数组由各种URL组成。根据以下代码,首先www.google.com在Firefox中打开。然后在进入forloop时,firefox被杀死; @links数组中的第一个URL被打开。第二次URL在第二次进入forloop时在新标签中打开,之后浏览器被杀死。但是我需要首先杀死firefox,每当它进入forloop时,然后URL应该在新的浏览器窗口中打开。善意帮助。如何在使用perl打开浏览器之前完全关闭当前浏览器窗口

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

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

为什么需要这个?您可以使用LWP – PSIAlt

+0

@PSIAlt查询这些网址 - 也许代码样本可以帮助您排除。 – Michael

+0

你想做什么? – durron597

回答

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++) 
+0

thanx为你的回应:)我试着做这个我的@ links =(“https://www.youtube.com”,“https://www.facebook.com”,“https://www.yahoo.com “); 但仍然没有按预期工作.. system(“start https://www.google.com”); (@links){ system(“taskkill/im firefox.exe”); system(“start $ link”); } – likestolearn

+0

咦? 'for($ i = 0; $ i <$#links; $ i ++)'会跳过'@ links'的最后一个元素。 OP有它的权利,或者你可以说'<= $#链接'。 – mob

+0

我无法发布答案,让您知道确切的问题。我的@links包含3个元素。 youtube.com,facebook.com和yahoo.com..for我facebook.com和yahoo.com在不同标签的同一窗口中打开 – likestolearn

0

taskkill向一个或多个进程发送信号并立即返回。这可能需要几毫秒的信号处理才能实际关闭,所以给你的过程中的一些的时间来杀死信号作出回应:

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

我的@links包含3个元素。 youtube.com,facebook.com和yahoo.com..for我facebook.com和yahoo.com在不同的标签 – likestolearn

1

使用WWW::Mechanize::Firefox代替。

MozRepl::RemoteObject提供了更低层次的访问。

+0

在同一个窗口中打开,不工作..我尝试阅读我的网页的页面源..它说错误获取“urlname”:未找到。但我可以在浏览器中手动打开该网址。这就是为什么我试图在浏览器中打开它,从那里读取页面源,然后关闭浏览器,然后再打开它。我在数组中有很多网址。所以每次阅读这些pagesource后关闭浏览器对我来说都是非常理想的。 – likestolearn

+0

WWW :: Mechanize :: Firefox确实在浏览器中打开了URL。浏览器窗口是隐藏的(默认?)。 – ikegami

+0

for($ i = 0; $ i <$#links; $ i ++) { open $ file1,“>> test.txt”; my $ mech = WWW :: Mechanize-> new(); (“Mozilla/5.0(Windows; U; Windows NT 6.1; ru; rv:1.9.2.18)Gecko/20110614 Firefox/3.6.18”); my $ psurl = $ links [$ i]; $ mech-> get($ psurl); print $ file1 $ mech-> content(); }#This is not working – likestolearn

0

尝试使用命令打开获取(然后杀死)pid。

而就扔了这一点那里,如果你喜欢的循环......

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

并作为其有人说,你应该使用WWW ::机械化::火狐

相关问题