2010-05-25 91 views
3

我試圖在Snow Leopard上使用Java 6,JUnit 4和Eclipse運行Selenium RC 1.0.3。Selenium RC 403錯誤 - 禁止代理

這裏是我的測試類,從硒文檔:

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 

我試過(在網上找到各種建議)用*chrome*firefox代替*firefox,用https代替http,並加入selenium.start(),但沒有任何幫助,甚至沒有改變行爲。

任何想法?

編輯:硒服務器正在運行,並且本地防火牆被禁用。

回答

1

OK,這裏有一個解決方案,沒有任何的理解:如果@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延伸TestCase從JUnit的3.我已經升級的文件爲例來的JUnit 4沒有思考什麼問題可能會造成。

+0

我不知道它是否是剪切和粘貼錯誤,但根據JUnit4文檔,您的before方法應該是靜態的,找到SeleneseTestCase的源代碼後,它看起來像安裝方法試圖操縱實例數據,它無法達到。不知道爲什麼這不是拋出一個錯誤。 – mezmo 2010-05-25 19:08:46

+0

如果在TestNG中運行測試,它對靜態方法的要求不同。 – mezmo 2010-05-25 19:09:28

+0

你在想'@ BeforeClass'註釋嗎?否則,請給我鏈接,我經常使用'@ Before'作爲非靜態方法。 – 2010-05-25 19:43:04