Java 使用Selenium在多个浏览器上运行JUnit测试

Java 使用Selenium在多个浏览器上运行JUnit测试,java,eclipse,selenium,browser,junit,Java,Eclipse,Selenium,Browser,Junit,我正在尝试在几种浏览器(Chrome、Edge、Firefox等)上运行测试 我不需要它们并行运行,它们可以一个接一个地运行。 我正在使用initbrowser在@before和switch case中查找XML配置文件中的浏览器(getData函数) 但是,由于测试需要检查XML,以查看我在浏览器类型(XML)中使用的浏览器 铬 我无法在多个浏览器上运行测试。为此,我需要手动更改XML中的浏览器 有没有办法用Junit做到这一点?(我在Eclipse中使用Java。)您可以为不同的浏览器创

我正在尝试在几种浏览器(Chrome、Edge、Firefox等)上运行测试

我不需要它们并行运行,它们可以一个接一个地运行。 我正在使用initbrowser在
@before
和switch case中查找XML配置文件中的浏览器(
getData
函数)

但是,由于测试需要检查XML,以查看我在
浏览器类型(XML)中使用的浏览器

我无法在多个浏览器上运行测试。为此,我需要手动更改XML中的浏览器


有没有办法用Junit做到这一点?(我在Eclipse中使用Java。)

您可以为不同的浏览器创建多个XML。这不是对您问题的回答,但您是否知道,在InitBrowser中,您正在根据电子表格设置设置隐式等待超时,但在初始化驱动程序后,在@BeforeClass中,您的等待时间超过了硬编码的20秒?在您的问题中,我通过创建一个前端来实现这一点,该前端允许测试人员选择哪个浏览器以及各种其他选项,然后使用这些设置创建文本表文件,但这是因为我使用JBhave,它将JUnit与故事文件(BDD)结合使用,这些参数随后被传递到我的测试中,而无需更改脚本。其他更简单的界面只是使用一个电子表格来设置所有这些参数,同样的想法。嘿,是的,我看到了隐式等待的东西,谢谢,我将删除一个。我不太明白你回答的第二部分。是的,但是我还需要为我的每个测试用例创建这个测试用例。。所以我只是重新编写了几次代码。
@BeforeClass
public static void openBrowser() throws ParserConfigurationException, SAXException, IOException {
    initBrowser(getData("BrowserType"));
    mainWindowHandle = driver.getWindowHandle();
    wait = new WebDriverWait(driver, Long.parseLong(getData("WaitTime")));
    driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
    initExtentReport();
    initElements();
}

public static void initBrowser(String browserType) throws ParserConfigurationException, SAXException, IOException {
    switch (browserType.toLowerCase())
        {
        case "firefox":
             driver = initFFDriver();
             break;

        case "ie":
             driver = initIEDriver();
             break;

        case "chrome":
             driver = initChromeDriver();
             break;

             default:
                 driver = initChromeDriver();
                 break; 
    }

    driver.manage().window().maximize();        
    driver.get(getData("URL"));
    driver.manage().timeouts().implicitlyWait(Integer.parseInt(getData("WaitTime")), TimeUnit.SECONDS);
}