首页 文章

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

提问于
浏览
2

我正在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 回答

  • 1

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

    要设置eclipse以运行它,您需要更新运行配置 . 那是在

    Run > Run Configurations
    

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

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

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

相关问题