как правильно использовать addCustomRequestHeader - PullRequest
4 голосов
/ 14 декабря 2010

Я пытаюсь добавить заголовки в мой запрос HTTP для конкретного теста.Это очень важно, так как я пытаюсь протестировать приложение, предназначенное для мобильных телефонов.Мне удалось узнать о методе 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();
    }

}

Тестовый пример проходит, хотя строка "Golf" не должнапоявляются в мобильной версии страницы.При проверке навигатора я вижу, что я не в мобильной версии.

Кроме того, я получаю это ПРЕДУПРЕЖДЕНИЕ:

ПРЕДУПРЕЖДЕНИЕ: getString (addCustomRequestHeader) увидел плохой результатOK

Документация по методу addCustomRequestHeader гласит:

Это работает, только если браузер настроен на использование встроенного прокси-сервера Selenium

Думаю, в этом проблема.Есть идеи, как мне это сделать?

Ответы [ 2 ]

4 голосов
/ 15 марта 2012

Я начал в другом месте, чем вы, но затем закончил с тем же результатом, что и вы; Msgstr "Как добавить заголовок запроса в селен". Я знаю, что прошло много времени с тех пор, как вы опубликовали свой первоначальный вопрос, так что это для всех, кто ищет ответ на 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
1 голос
/ 21 декабря 2010

Вы должны убедиться, что вы используете Selenium в качестве прокси-сервера.Я написал статью о том, как использовать addCustomRequestHeader для поддержки базовой аутентификации.Вы должны быть в состоянии экстраполировать соответствующие части (обратите внимание, что я использовал Ruby, но он также сопоставляется с другими языками):

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

Одна вещь, которую вам очень нужно знатьиз того, что нет способа удалить заголовок запроса.Он всегда добавляется и добавляется для каждого запроса.Если вам нужно использовать разные заголовки, вам нужно перезапустить сервер Selenium.

...