【问题标题】:Selenium RC 403 Error - Forbidden for proxySelenium RC 403 错误 - 禁止代理
【发布时间】:2011-02-23 17:16:52
【问题描述】:

我正在尝试在 Snow Leopard 上使用 Java 6、JUnit 4 和 Eclipse 运行 Selenium RC 1.0.3。

这是我的测试课程,来自 Selenium 文档:

public class TestCase extends SeleneseTestCase {

  @Before
  public void before() throws Exception {
    setUp("http://www.google.com/", "*firefox");
  }

  @Test
  public void test() {
    selenium.open("/");
    selenium.type("q", "selenium rc");
    selenium.click("btnG");
    selenium.waitForPageToLoad("30000");
    assertTrue(selenium.isTextPresent("Advanced search"));
  }
}

我在调用selenium.open() 时收到以下错误:

11:16:59.916 INFO - Got result: 
XHR ERROR: URL = http://localhost:4444/ Response_Code = 403 
Error_Message = Forbidden+for+Proxy on session a8cf1e0bd5ed42c5a4df0c25ec5f5286

我尝试过(在网上找到各种建议)将*firefox 替换为*chrome*firefox,将http 替换为https 并添加selenium.start(),但都没有帮助,甚至没有改变行为。

有什么想法吗?

编辑: selenium-server 正在运行,本地防火墙已禁用。

【问题讨论】:

    标签: java eclipse macos selenium selenium-rc


    【解决方案1】:

    好的,这里有一个解决方案,没有任何理解:如果@Before方法被移除,并且对setUp()的调用被移动到@Test方法中,那么它可以工作:

    @Test
    public void test() throws Exception {
      setUp("http://www.google.com/", "*chrome");
      selenium.open("/");
      selenium.type("q", "selenium rc");
      selenium.click("btnG");
      selenium.waitForPageToLoad("30000");
      assertTrue(selenium.isTextPresent("Advanced search"));
    }
    

    但根据理解,这里有一个更好的解决方案:

    import com.thoughtworks.selenium.SeleneseTestCase;
    
    public class TestCase extends SeleneseTestCase {
    
      public void setUp() throws Exception {
        setUp("http://www.google.com/", "*firefox");
      }
    
      public void testAuto() throws Exception {
        selenium.open("/");
        selenium.type("q", "selenium rc");
        selenium.click("btnG");
        selenium.waitForPageToLoad("30000");
        assertTrue(selenium.isTextPresent("Advanced search"));
      }
    }
    

    事实证明,SeleneseTestCase 是从 JUnit 3 扩展而来的 TestCase。我已经将文档示例升级到了 JUnit 4,而没有考虑可能会导致什么问题。

    【讨论】:

    • 我不知道这是否是剪切和粘贴错误,但根据 JUnit4 文档,您的 before 方法应该是静态的,在找到 SeleneseTestCase 的源代码后,它看起来像设置方法正在尝试操作无法访问的实例数据。不知道为什么这不会引发错误。
    • 如果您在 TestNG 中运行测试,它对静态方法的要求不同。
    • 你在想@BeforeClass注解吗?否则,给我链接,我经常将@Before 用于非静态方法。
    • 你说得对,我的眼睛只是略过了@Before 上的“非静态”。对不起。如果在浏览器中打开网址,您是否可以直接通过?
    • 是的。我可以这样做,或者使用此处发布的任何一种解决方案。
    猜你喜欢
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 2015-11-18
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多