使用Eclipse中的自定义Firefox配置文件启动Selenium

时间:2010-02-26 11:11:41

标签: eclipse firefox junit selenium

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

大多数消息来源建议我需要像这样启动Selenium Server:

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

但是当从Eclipse中启动我的测试时它没有使用它 - 如果Selenium Server没有运行,测试将会运行。

此主题建议我可以在DefaultSelenium构造函数中设置配置文件:

Selenium RC - disabling browser cookie

但Selenium IDE(Firefox插件)为我生成的代码不使用该构造函数:

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模板?

谢谢! 斯图

2 个答案:

答案 0 :(得分:2)

我创建了一个SeleniumTestCase,它在每个测试类之前/之后启动/停止服务器,并在每次测试之前/之后启动/停止Selenium实例:

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

答案 1 :(得分:1)

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

要设置eclipse以运行它,您需要更新运行配置。

Run > Run Configurations 

查看其中包含selenium的项目并添加上面的配置,以便在运行时它将启动并运行。

我个人只是在开始工作时启动服务器,运行批处理文件并在当天结束时将其终止。