【问题标题】:How to catch 404 errors in Selenium using Perl?如何使用 Perl 在 Selenium 中捕获 404 错误?
【发布时间】:2011-02-18 01:09:19
【问题描述】:

我有一个 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

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

【问题讨论】:

    标签: perl selenium


    【解决方案1】:

    我不确定 Perl 中的实现,但在 Java 中,Selenium-RC 有一个流量捕获模式,定义为selenium.start("captureNetworkTraffic=true");,这将使您能够捕获 HTTP 响应,包括错误代码。一旦检索到错误代码,您可以随时恢复执行...

    Here 是一个很好的资源,用于介绍如何在检索到后捕获和处理/格式化此信息。虽然它使用 Python,但应该让你开始。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 这是一个创造性的解决方案。谢谢!
      猜你喜欢
      • 2013-07-13
      • 2010-11-21
      • 2018-01-16
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      • 2011-02-10
      相关资源
      最近更新 更多