如何使用Perl在Selenium中捕获404错误?

时间:2011-02-18 01:09:20

标签: perl selenium

我有一个Perl脚本,它使用Selenium来获取一个名为foo的HTML文档,该文档不存在(找不到404。)默认行为是脚本打印错误并终止,这样“bar”永远不会打印。我正在寻找一种方法让它继续使用,以便打印“bar”。

这就是我所拥有的。代码(称为foo.pl):

#!/usr/bin/perl

use strict;
use WWW::Selenium;

my $sel = WWW::Selenium->new( host => "localhost", 
                  port => 4444, 
                  browser => "*chrome", 
                  browser_url => "http://www.google.com/" );
$sel->start;

$sel->open("http://www.google.com/foo.html") 
print "bar";

以下是打印的消息:

Error requesting http://localhost:4444/selenium-server/driver/?cmd=open&1=http%3A%2F%2Fwww.google.com%2Ffoo.html&sessionId=bc9c086eef804a7c8a0090674333e4c7:
XHR ERROR: URL = http://www.google.com/foo.html Response_Code = 404 Error_Message = Not Found

我看了一遍,但还没有找到答案。谢谢!

2 个答案:

答案 0 :(得分:1)

我不确定Perl中的实现,但在Java中,Selenium-RC具有流量捕获模式,定义为selenium.start("captureNetworkTraffic=true");,可以捕获HTTP响应,包括错误代码。检索到错误代码后,您始终可以继续执行...

Here是一个很好的资源,可以在检索后捕获和处理/格式化此信息。它使用Python,但应该给你一个开始。

答案 1 :(得分:0)

或者,您可以在代码中创建一个(Test::) WWW :: Mechanize对象(以及您的Selenium对象),为其提供您希望Selenium检查的相同URL,并从响应对象中捕获状态Mechanize对象的。它是一个简单的方法,我将它用于我在执行selenium GET请求之前发出的HEAD请求。

(但不适用于javascript / ajax请求)