2010-12-14 212 views
4

我試圖添加標題到我的HTTP請求一個特定的測試用例。這是非常重要的,因爲我試圖測試一個旨在用於手機的應用程序。我設法找出了方法addCustomRequestHeader(String arg0, String arg1)。不幸的是,似乎我不知道如何正確使用它。如何正確使用addCustomRequestHeader

這是我的測試套件:

package testscripts; 

import com.thoughtworks.selenium.DefaultSelenium; 
import com.thoughtworks.selenium.SeleneseTestCase; 
import com.thoughtworks.selenium.Selenium; 

import org.junit.After; 
import org.junit.Before; 
import org.junit.Test; 

public class TCNewspapers extends SeleneseTestCase { 

    //Local parameters 
    private static final String SELENIUM_SERVER_HOST = "localhost"; 
    private static final int SELENIUM_SERVER_PORT = 4444; 
    private static final String NAVIGATOR = "*firefox"; 
    private String URL = "http://www.marca.com/"; 

    Selenium selenium; 

    @Before 
    public void setUp() throws Exception { 
     super.setUp(); 

     selenium = new DefaultSelenium(SELENIUM_SERVER_HOST, 
       SELENIUM_SERVER_PORT, 
       NAVIGATOR, 
       URL); 

     setUp(URL, NAVIGATOR); 

     //selenium.start(); 
     selenium.start("addCustomRequestHeader=true"); 
     //selenium.start("captureNetworkTraffic=true, addCustomRequestHeader=true"); 
     Thread.sleep(5000); 
     selenium.windowMaximize(); 
    } 

    @Test 
    public void testOpenMarcaMobilePage() { 

     selenium.addCustomRequestHeader("user-agent", "Mozilla/5.0 (iPhone;"); 
     selenium.open(URL); 
     selenium.waitForPageToLoad("300000"); 
     verifyTrue(selenium.isTextPresent("Golf")); 
    } 

    @After 
    public void stopClient() throws Exception { 
     selenium.stop(); 
    } 

} 

測試用例傳球,althoug的「高爾夫」字符串不應該出現在頁面的移動版本。當檢查導航器時,我發現我不在移動版本中。

而且,我得到這樣的警告:

警告:的getString(addCustomRequestHeader)看到壞的結果確定

addCustomRequestHeader方法的文檔說:

這僅當瀏覽器配置爲使用內置的Selenium代理時纔有效

我想這就是問題所在。任何想法我怎麼能做到這一點?

回答

1

您需要確保您使用Selenium作爲代理服務器。我寫了一篇關於如何使用addCustomRequestHeader以支持基本認證的文章。您應該能夠推斷相關的部分(注意我用了Ruby,但它映射到其他語言一樣好):

http://mogotest.com/blog/2010/06/23/how-to-perform-basic-auth-in-selenium

有一件事你非常需要注意的是,有沒有刪除請求頭的方法。它總是附加的,並且它是爲每個請求添加的。如果您需要使用不同的標題,則需要重新啓動Selenium服務器。

+0

感謝您的答案nivdrum。我做的是:設置我的Firefox通過Selenium服務器(localhost:4444)連接到互聯網,然後,因爲在我的辦公室我通過代理連接到互聯網,我用選項-Dhttp.proxyHost = myProxy啓動了我的Selenium服務器 - Dhttp.proxyPort = 8080。 – Panacea 2010-12-30 12:41:58

+0

儘管它工作,我仍然得到這個警告:警告:getString(addCustomRequestHeader)看到一個壞結果確定 – Panacea 2010-12-30 13:41:56

+0

我不熟悉警告消息。但是,你在運行什麼版本的Selenium?我修復了2.0a5或2.0a6中的一些請求頭文件。 – nirvdrum 2010-12-30 16:54:09

4

我從一個與你不同的地方開始,但最終結果與你一樣; 「我如何向硒添加請求標題」。我知道你已經發布了你的原始問題已經有一段時間了,所以這對於任何正在Java中尋找答案的人來說都是如此。下面是一些代碼我要請求頭添加到您的硒請求JAVA想出了:

public class MyTestCase extends SeleneseTestCase { 

@Before 
public void setUp() throws Exception { 
    selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://localhost"); 
    selenium.start("addCustomRequestHeaders=true"); 
    selenium.open("/"); 
} 


@Test 
public void testMyTestCase() { 
    selenium.addCustomRequestHeader("HEADER_NAME", "HEADER_VALUE"); 
    //header "HEADER_NAME", with "HEADER_VALUE" is now in your request 
    selenium.click("link=Hello World"); 
} 

}

更新 您還必須與'啓動硒服務器 - addCustomRequestHeader'輸入變量。例如:

%java_home%\bin\java -jar selenium-server-standalone-2.25.0.jar -addCustomRequestHeader 
+0

這已經在Selenium RC 2.17a上測試過 – bakoyaro 2012-03-14 20:16:44