首页 > 解决方案 > Selenium 3.141.59、Junit 4和Cucumber 6.10.2实现跨浏览器测试

问题描述

我得到了一些 selenium junit4 测试,这些测试针对 selenium 网格在多个浏览器上运行。我意识到这一点

@RunWith(Parameterized.class)
public class LoginTest {

    public LoginTest(final RemoteWebDriver driver) {
        this.browser = driver;
    }

    @Parameters
    public static RemoteWebDriver[] browsers(){
        return WebDriverFactory.getAll().toArray(RemoteWebDriver[]::new);
    }

这样,一切都运行得很好。每个测试都使用我工厂中定义的浏览器实例运行。

但我想出了使用黄瓜测试的想法。测试正在运行,但我还需要实现多个浏览器部分。

所以我的方法是像上面那样做,定义@parameters并将它们传递给构造函数

喜欢:

public class LoginStepDefinition {

    /** The browser. */
    private final WebDriver browser;

    /**
     * Instantiates a new login step definition.
     *
     * @param driver the driver
     */
    public LoginStepDefinition(final RemoteWebDriver driver) {
        this.browser = driver;
    }

    /**
     * Browsers.
     *
     * @return the remote web driver[]
     */
    @Parameters
    public static RemoteWebDriver[] browsers(){
        return WebDriverFactory.getAll().toArray(RemoteWebDriver[]::new);
    }

...
@Given...
@When...
@Then...

但后来我得到:

cucumber.LoginStepDefinition doesn't have an empty constructor. If you need dependency injection, put cucumber-picocontainer on the classpath

有没有办法在没有 TestNG 或任何其他框架的情况下实现这一点我的意思是我想要实现的只是用不同的浏览器运行单个黄瓜测试。

为了四舍五入,我正在使用 maven。

标签: javaseleniumjunitcucumbercross-browser

解决方案


推荐阅读