2010-12-14 210 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