我有一个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
我看了一遍,但还没有找到答案。谢谢!
答案 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请求)