簡體   English   中英

如何正確使用addCustomRequestHeader

[英]how-to use addCustomRequestHeader properly

我正在嘗試將標頭添加到我的特定測試用例的HTTP請求中。 這非常重要,因為我正在嘗試測試一個用於移動電話的應用程序。 我設法找到addCustomRequestHeader(String arg0, String arg1)方法addCustomRequestHeader(String arg0, String arg1) 不幸的是,我似乎不知道如何正確使用它。

這是我的測試套件:

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();
    }

}

測試案例正在通過,但“高爾夫”字符串不應出現在頁面的移動版本中。 檢查導航器時,我發現我不在移動版本中。

另外,我收到了這個警告:

警告:getString(addCustomRequestHeader)看到了錯誤的結果OK

addCustomRequestHeader方法的文檔說:

這僅在瀏覽器配置為使用內置Selenium代理時才有效

我猜這就是問題所在。 知道我該怎么辦?

我從與你不同的地方開始,但結果與你的結果相同; “如何向selenium添加請求標頭”。 我知道你發布原始問題已經有一段時間了,所以這適用於那些正在尋找Java答案的人。 以下是我在JAVA中為您的selenium請求添加請求標頭時提供的一些代碼:

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'輸入變量啟動selenium服務器。 例如:

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

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

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

您需要注意的一件事是無法刪除請求標頭。 它總是添加劑,它是為每個請求添加的。 如果您需要使用不同的標頭,則需要重新啟動Selenium服務器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM