代码之家  ›  专栏  ›  技术社区  ›  Sebi

HTTP错误403时不停止

  •  3
  • Sebi  · 技术社区  · 14 年前

    在我的一个硒测试案例中,我试图确保某些页面无法访问。相反,应该给出HTTP返回代码403。

    但是,这里Selenium终止测试执行,但有以下异常:

    com.thoughtworks.selenium.SeleniumException: XHR ERROR: URL = http://user:password@www.example.com/admin Response_Code = 403 Error_Message = Forbidden

    有办法解决这个问题吗?

    3 回复  |  直到 12 年前
        1
  •  4
  •   Sebi    14 年前

    好像我得自己回答这个问题…

    我现在用一个try…catch块包围“open”调用。在这里,我分析异常消息,如果它包含403代码和XHR错误。在我看来不是很干净,但它起作用了。

        2
  •  2
  •   E.J. Sexton    14 年前

    我尝试使用phpunit测试HTTP 403错误。我检查了phpunit Selenium扩展代码,发现驱动程序在收到错误响应后立即结束会话,而且似乎没有绕过此功能的方法。

    最后,我使用了一个try-catch解决方案并重新启动Selenium会话:

    try {
        $this->open('restricted_url');
        $this->assertTitle('The page cannot be displayed');
    } catch (PHPUnit_Framework_Exception $e) {
        $this->start();
    }
    

    当Selenium会话重新启动时,所有会话信息都将丢失,正如预期的那样,因此您需要再次构建会话以运行更多测试:

    $this->loginAsGuest();
    
    try {
        $this->open('admin_url');
        $this->assertTitle('The page cannot be displayed');
    } catch (PHPUnit_Framework_Exception $e) {
        $this->start();
        $this->loginAsGuest();
    }
    
        3
  •  2
  •   David d C e Freitas    12 年前

    我不知道您使用的是什么语言,但我认为您可以通过在打开页面时指示Selenium忽略状态代码来绕过这个问题。

    红宝石:

    @browser.remote_control_command('open', [url, 'true'])
    

    C中:

    ((DefaultSelenium)selenium).Processor.DoCommand("open", new string[]{url, "true"}))
    

    我相信Selenium主干中的行为现在默认是忽略状态代码。所以,你可以试着建立它,看看它是否适合你。