2010-02-26 53 views
2

我在Eclipse中运行Selenium测试,但无法加载自定义的Firefox配置文件。从Eclipse自定义Firefox配置文件启动Selenium

大多数消息表明我需要启动Selenium服务器是这样的:

java -jar selenium-server.jar -firefoxProfileTemplate </path/to/template/> 

但在Eclipse中发动我的测试,当它不使用 - 如果Selenium服务器不是测试运行运行。

这个线程表明,我可以设置在DefaultSelenium构造轮廓:由硒IDE(Firefox插件)对我产生

Selenium RC - disabling browser cookie

但代码不使用该构造:

package com.example.tests; 

import com.thoughtworks.selenium.*; 
import java.util.regex.Pattern; 

public class Example extends SeleneseTestCase { 
    public void setUp() throws Exception { 
     setUp("http://www.example.com/", "*firefox"); 
    } 
    public void testExample() throws Exception { 
     selenium.open("/"); 
     selenium.click("//body"); 
    } 
} 

我应该在哪里设置DefaultSelenium配置选项?或者是否有其他一些方法可以用来加载我的自定义Firefox模板?

谢谢! Stu

回答

1

上面代码的版本假定您在端口4444上对本地主机运行测试,这就是为什么它在设置中有2个参数。

要设置eclipse来运行它,您需要更新运行配置。这是在

Run > Run Configurations 

看一看对于具有硒,并添加上面的配置,这样当它运行时将它捡起来,然后运行该项目。

我个人只是在我开始工作时通过运行批处理文件并在一天结束时杀死服务器。

+0

太棒了 - 这让它工作。谢谢! – stubotnik 2010-03-01 10:19:16

+1

如果要在代码中完成所有操作,还可以实例化并启动org.openqa.selenium.server.SeleniumServer的实例。请参阅.setFirefoxProfileTemplate()。 – dhackner 2010-08-03 06:56:10

2

我提出,启动SeleniumTestCase /停止服务器前/每个测试类,并开始后/前停止硒实例/每次测试后:

public class SeleniumTestCase { 
    protected static Selenium selenium; 
    protected static AppNavUtils appNavUtils; 

    @BeforeClass 
    public static void setUpBeforeClass() throws Exception { 
     SeleniumServerControl.getInstance().startSeleniumServer(); 
    } 

    @AfterClass 
    public static void tearDownAfterClass() throws Exception { 
     SeleniumServerControl.getInstance().stopSeleniumServer(); 
    } 

    @Before 
    public void setUp() throws Exception { 
     // Replace "*chrome" with "*firefox" for Selenium > 1.0 
     selenium = new DefaultSelenium("localhost", 5444, "*chrome", "http://localhost:8080/"); 
     selenium.start(); 
     appNavUtils = new AppNavUtils(selenium); 
    } 

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

的SeleniumServerControl启动和停止服务器:

public class SeleniumServerControl { 
    private static final SeleniumServerControl instance = new SeleniumServerControl(); 

    public static SeleniumServerControl getInstance() 
    { 
     return instance; 
    } 

    private SeleniumServer server = null; 

    protected SeleniumServerControl(){} 

    public void startSeleniumServer() { 
     if (server == null) { 
      RemoteControlConfiguration rcc = new RemoteControlConfiguration(); 
      rcc.setPort(5444); 
      //rcc.setFirefoxProfileTemplate(newFirefoxProfileTemplate) 
      server = new SeleniumServer(rcc); 
     } 

     server.start(); 
    } 

    public void stopSeleniumServer() 
    { 
     if (server != null) { 
      server.stop(); 
      server = null; 
     } 
    } 
}